{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "id": "byVYFEVEXS9R"
   },
   "outputs": [],
   "source": [
    "import os\n",
    "import openai\n",
    "import pandas as pd\n",
    "import re\n",
    "from time import sleep\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn import metrics"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "hdNnzKRNXlgg"
   },
   "source": [
    "### Importing datasets\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "id": "jE_TJC7KXTu5"
   },
   "outputs": [],
   "source": [
    "# Reading the data - random sample from the\n",
    "sample = pd.read_csv('complete_annotations.csv', index_col = 0)\n",
    "\n",
    "\n",
    "# V10 is the column that contains the tweet text\n",
    "# V1 is the tweet ID\n",
    "# 1 indicates disinformation\n",
    "# 2 indicates counter-disinformation\n",
    "# 3 indicates unrelated"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 424
    },
    "id": "L0qqWmRLXTs4",
    "outputId": "d30554b6-3c55-4551-a530-8873aae9db63"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.google.colaboratory.intrinsic+json": {
       "summary": "{\n  \"name\": \"sample\",\n  \"rows\": 300,\n  \"fields\": [\n    {\n      \"column\": \"V1\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 98712538937565488,\n        \"min\": 489793327080800256,\n        \"max\": 795635209077145600,\n        \"num_unique_values\": 300,\n        \"samples\": [\n          608274848499023872,\n          494861564315320320,\n          491812653392596992\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Label Expert\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0,\n        \"min\": 1,\n        \"max\": 3,\n        \"num_unique_values\": 3,\n        \"samples\": [\n          1,\n          3,\n          2\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Label GPT-4\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0,\n        \"min\": 1,\n        \"max\": 3,\n        \"num_unique_values\": 3,\n        \"samples\": [\n          1,\n          3,\n          2\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Label GPT-3\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0,\n        \"min\": 1,\n        \"max\": 3,\n        \"num_unique_values\": 3,\n        \"samples\": [\n          2,\n          1,\n          3\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Label Student\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0,\n        \"min\": 1,\n        \"max\": 3,\n        \"num_unique_values\": 3,\n        \"samples\": [\n          1,\n          2,\n          3\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Label Llama 70b\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0,\n        \"min\": 1,\n        \"max\": 3,\n        \"num_unique_values\": 3,\n        \"samples\": [\n          3,\n          2,\n          1\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Label Llama 8b\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0,\n        \"min\": 1,\n        \"max\": 3,\n        \"num_unique_values\": 3,\n        \"samples\": [\n          3,\n          2,\n          1\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"V10\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 1,\n        \"samples\": [\n          \"some tweet text\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
       "type": "dataframe",
       "variable_name": "sample"
      },
      "text/html": [
       "\n",
       "  <div id=\"df-1b3f7e9d-3891-4d7a-8e6b-c9d84c7ba8d3\" class=\"colab-df-container\">\n",
       "    <div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>V1</th>\n",
       "      <th>Label Expert</th>\n",
       "      <th>Label GPT-4</th>\n",
       "      <th>Label GPT-3</th>\n",
       "      <th>Label Student</th>\n",
       "      <th>Label Llama 70b</th>\n",
       "      <th>Label Llama 8b</th>\n",
       "      <th>V10</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>513808166778597376</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>some tweet text</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>626547631649521664</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>some tweet text</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>489905742724726784</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>some tweet text</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>490526008865345600</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>some tweet text</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>581217363703496704</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>some tweet text</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>295</th>\n",
       "      <td>489891133787348992</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>some tweet text</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>296</th>\n",
       "      <td>621357306282950656</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>some tweet text</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>297</th>\n",
       "      <td>490615527912775680</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>some tweet text</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298</th>\n",
       "      <td>781529249094242304</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>some tweet text</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>299</th>\n",
       "      <td>502742028476628992</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>some tweet text</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>300 rows × 8 columns</p>\n",
       "</div>\n",
       "    <div class=\"colab-df-buttons\">\n",
       "\n",
       "  <div class=\"colab-df-container\">\n",
       "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-1b3f7e9d-3891-4d7a-8e6b-c9d84c7ba8d3')\"\n",
       "            title=\"Convert this dataframe to an interactive table.\"\n",
       "            style=\"display:none;\">\n",
       "\n",
       "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
       "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
       "  </svg>\n",
       "    </button>\n",
       "\n",
       "  <style>\n",
       "    .colab-df-container {\n",
       "      display:flex;\n",
       "      gap: 12px;\n",
       "    }\n",
       "\n",
       "    .colab-df-convert {\n",
       "      background-color: #E8F0FE;\n",
       "      border: none;\n",
       "      border-radius: 50%;\n",
       "      cursor: pointer;\n",
       "      display: none;\n",
       "      fill: #1967D2;\n",
       "      height: 32px;\n",
       "      padding: 0 0 0 0;\n",
       "      width: 32px;\n",
       "    }\n",
       "\n",
       "    .colab-df-convert:hover {\n",
       "      background-color: #E2EBFA;\n",
       "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
       "      fill: #174EA6;\n",
       "    }\n",
       "\n",
       "    .colab-df-buttons div {\n",
       "      margin-bottom: 4px;\n",
       "    }\n",
       "\n",
       "    [theme=dark] .colab-df-convert {\n",
       "      background-color: #3B4455;\n",
       "      fill: #D2E3FC;\n",
       "    }\n",
       "\n",
       "    [theme=dark] .colab-df-convert:hover {\n",
       "      background-color: #434B5C;\n",
       "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
       "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
       "      fill: #FFFFFF;\n",
       "    }\n",
       "  </style>\n",
       "\n",
       "    <script>\n",
       "      const buttonEl =\n",
       "        document.querySelector('#df-1b3f7e9d-3891-4d7a-8e6b-c9d84c7ba8d3 button.colab-df-convert');\n",
       "      buttonEl.style.display =\n",
       "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
       "\n",
       "      async function convertToInteractive(key) {\n",
       "        const element = document.querySelector('#df-1b3f7e9d-3891-4d7a-8e6b-c9d84c7ba8d3');\n",
       "        const dataTable =\n",
       "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
       "                                                    [key], {});\n",
       "        if (!dataTable) return;\n",
       "\n",
       "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
       "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
       "          + ' to learn more about interactive tables.';\n",
       "        element.innerHTML = '';\n",
       "        dataTable['output_type'] = 'display_data';\n",
       "        await google.colab.output.renderOutput(dataTable, element);\n",
       "        const docLink = document.createElement('div');\n",
       "        docLink.innerHTML = docLinkHtml;\n",
       "        element.appendChild(docLink);\n",
       "      }\n",
       "    </script>\n",
       "  </div>\n",
       "\n",
       "\n",
       "<div id=\"df-2d37b5a1-cd4d-4b9c-ab05-fd0d6255d4c7\">\n",
       "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-2d37b5a1-cd4d-4b9c-ab05-fd0d6255d4c7')\"\n",
       "            title=\"Suggest charts\"\n",
       "            style=\"display:none;\">\n",
       "\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
       "     width=\"24px\">\n",
       "    <g>\n",
       "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
       "    </g>\n",
       "</svg>\n",
       "  </button>\n",
       "\n",
       "<style>\n",
       "  .colab-df-quickchart {\n",
       "      --bg-color: #E8F0FE;\n",
       "      --fill-color: #1967D2;\n",
       "      --hover-bg-color: #E2EBFA;\n",
       "      --hover-fill-color: #174EA6;\n",
       "      --disabled-fill-color: #AAA;\n",
       "      --disabled-bg-color: #DDD;\n",
       "  }\n",
       "\n",
       "  [theme=dark] .colab-df-quickchart {\n",
       "      --bg-color: #3B4455;\n",
       "      --fill-color: #D2E3FC;\n",
       "      --hover-bg-color: #434B5C;\n",
       "      --hover-fill-color: #FFFFFF;\n",
       "      --disabled-bg-color: #3B4455;\n",
       "      --disabled-fill-color: #666;\n",
       "  }\n",
       "\n",
       "  .colab-df-quickchart {\n",
       "    background-color: var(--bg-color);\n",
       "    border: none;\n",
       "    border-radius: 50%;\n",
       "    cursor: pointer;\n",
       "    display: none;\n",
       "    fill: var(--fill-color);\n",
       "    height: 32px;\n",
       "    padding: 0;\n",
       "    width: 32px;\n",
       "  }\n",
       "\n",
       "  .colab-df-quickchart:hover {\n",
       "    background-color: var(--hover-bg-color);\n",
       "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
       "    fill: var(--button-hover-fill-color);\n",
       "  }\n",
       "\n",
       "  .colab-df-quickchart-complete:disabled,\n",
       "  .colab-df-quickchart-complete:disabled:hover {\n",
       "    background-color: var(--disabled-bg-color);\n",
       "    fill: var(--disabled-fill-color);\n",
       "    box-shadow: none;\n",
       "  }\n",
       "\n",
       "  .colab-df-spinner {\n",
       "    border: 2px solid var(--fill-color);\n",
       "    border-color: transparent;\n",
       "    border-bottom-color: var(--fill-color);\n",
       "    animation:\n",
       "      spin 1s steps(1) infinite;\n",
       "  }\n",
       "\n",
       "  @keyframes spin {\n",
       "    0% {\n",
       "      border-color: transparent;\n",
       "      border-bottom-color: var(--fill-color);\n",
       "      border-left-color: var(--fill-color);\n",
       "    }\n",
       "    20% {\n",
       "      border-color: transparent;\n",
       "      border-left-color: var(--fill-color);\n",
       "      border-top-color: var(--fill-color);\n",
       "    }\n",
       "    30% {\n",
       "      border-color: transparent;\n",
       "      border-left-color: var(--fill-color);\n",
       "      border-top-color: var(--fill-color);\n",
       "      border-right-color: var(--fill-color);\n",
       "    }\n",
       "    40% {\n",
       "      border-color: transparent;\n",
       "      border-right-color: var(--fill-color);\n",
       "      border-top-color: var(--fill-color);\n",
       "    }\n",
       "    60% {\n",
       "      border-color: transparent;\n",
       "      border-right-color: var(--fill-color);\n",
       "    }\n",
       "    80% {\n",
       "      border-color: transparent;\n",
       "      border-right-color: var(--fill-color);\n",
       "      border-bottom-color: var(--fill-color);\n",
       "    }\n",
       "    90% {\n",
       "      border-color: transparent;\n",
       "      border-bottom-color: var(--fill-color);\n",
       "    }\n",
       "  }\n",
       "</style>\n",
       "\n",
       "  <script>\n",
       "    async function quickchart(key) {\n",
       "      const quickchartButtonEl =\n",
       "        document.querySelector('#' + key + ' button');\n",
       "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
       "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
       "      try {\n",
       "        const charts = await google.colab.kernel.invokeFunction(\n",
       "            'suggestCharts', [key], {});\n",
       "      } catch (error) {\n",
       "        console.error('Error during call to suggestCharts:', error);\n",
       "      }\n",
       "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
       "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
       "    }\n",
       "    (() => {\n",
       "      let quickchartButtonEl =\n",
       "        document.querySelector('#df-2d37b5a1-cd4d-4b9c-ab05-fd0d6255d4c7 button');\n",
       "      quickchartButtonEl.style.display =\n",
       "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
       "    })();\n",
       "  </script>\n",
       "</div>\n",
       "\n",
       "  <div id=\"id_382f4635-6b86-4d88-b747-343efcf22559\">\n",
       "    <style>\n",
       "      .colab-df-generate {\n",
       "        background-color: #E8F0FE;\n",
       "        border: none;\n",
       "        border-radius: 50%;\n",
       "        cursor: pointer;\n",
       "        display: none;\n",
       "        fill: #1967D2;\n",
       "        height: 32px;\n",
       "        padding: 0 0 0 0;\n",
       "        width: 32px;\n",
       "      }\n",
       "\n",
       "      .colab-df-generate:hover {\n",
       "        background-color: #E2EBFA;\n",
       "        box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
       "        fill: #174EA6;\n",
       "      }\n",
       "\n",
       "      [theme=dark] .colab-df-generate {\n",
       "        background-color: #3B4455;\n",
       "        fill: #D2E3FC;\n",
       "      }\n",
       "\n",
       "      [theme=dark] .colab-df-generate:hover {\n",
       "        background-color: #434B5C;\n",
       "        box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
       "        filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
       "        fill: #FFFFFF;\n",
       "      }\n",
       "    </style>\n",
       "    <button class=\"colab-df-generate\" onclick=\"generateWithVariable('sample')\"\n",
       "            title=\"Generate code using this dataframe.\"\n",
       "            style=\"display:none;\">\n",
       "\n",
       "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
       "       width=\"24px\">\n",
       "    <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
       "  </svg>\n",
       "    </button>\n",
       "    <script>\n",
       "      (() => {\n",
       "      const buttonEl =\n",
       "        document.querySelector('#id_382f4635-6b86-4d88-b747-343efcf22559 button.colab-df-generate');\n",
       "      buttonEl.style.display =\n",
       "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
       "\n",
       "      buttonEl.onclick = () => {\n",
       "        google.colab.notebook.generateWithVariable('sample');\n",
       "      }\n",
       "      })();\n",
       "    </script>\n",
       "  </div>\n",
       "\n",
       "    </div>\n",
       "  </div>\n"
      ],
      "text/plain": [
       "                     V1  Label Expert  Label GPT-4  Label GPT-3  \\\n",
       "0    513808166778597376             1            1            2   \n",
       "1    626547631649521664             3            3            2   \n",
       "2    489905742724726784             2            2            1   \n",
       "3    490526008865345600             3            3            3   \n",
       "4    581217363703496704             1            1            1   \n",
       "..                  ...           ...          ...          ...   \n",
       "295  489891133787348992             3            3            3   \n",
       "296  621357306282950656             2            2            1   \n",
       "297  490615527912775680             3            2            1   \n",
       "298  781529249094242304             1            3            1   \n",
       "299  502742028476628992             3            3            3   \n",
       "\n",
       "     Label Student  Label Llama 70b  Label Llama 8b              V10  \n",
       "0                1                3               3  some tweet text  \n",
       "1                2                2               2  some tweet text  \n",
       "2                2                2               1  some tweet text  \n",
       "3                3                3               3  some tweet text  \n",
       "4                1                1               1  some tweet text  \n",
       "..             ...              ...             ...              ...  \n",
       "295              3                3               3  some tweet text  \n",
       "296              2                2               1  some tweet text  \n",
       "297              2                2               3  some tweet text  \n",
       "298              3                1               1  some tweet text  \n",
       "299              3                3               3  some tweet text  \n",
       "\n",
       "[300 rows x 8 columns]"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 206
    },
    "id": "eEUmHlqFKvhX",
    "outputId": "17167441-02db-4bf9-c675-d5732810a500"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.google.colaboratory.intrinsic+json": {
       "summary": "{\n  \"name\": \"example_tweets\",\n  \"rows\": 5,\n  \"fields\": [\n    {\n      \"column\": \"Tweet ID\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 60892697052381048,\n        \"min\": 489905742724726784,\n        \"max\": 626547631649521664,\n        \"num_unique_values\": 5,\n        \"samples\": [\n          626547631649521664,\n          581217363703496704,\n          489905742724726784\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Tweet Text\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 5,\n        \"samples\": [\n          \"RT @JulieBishopMP: Only one hand was raised in opposition but a veto should never be allowed to deny to justice #MH17 http://t.co/9sOedGgQYe\",\n          \"#Ukraine shot down #MH17 . https://t.co/roh5vfjx2b . #Donetsk #NY #JWO #Paris #Berlin #truth #London #Zionazis #Netherlands #Auspol\",\n          \"RT @steve_hawkes: Expert Anne Applebaum says MH17 should be a wake up call for West - admit what's going on in Ukraine is a Russian invasio\\u2026\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Label Expert\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 1,\n        \"min\": 1,\n        \"max\": 3,\n        \"num_unique_values\": 3,\n        \"samples\": [\n          1,\n          3,\n          2\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
       "type": "dataframe",
       "variable_name": "example_tweets"
      },
      "text/html": [
       "\n",
       "  <div id=\"df-72e32c84-e0d0-4a40-8277-c1bed5ab75a8\" class=\"colab-df-container\">\n",
       "    <div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Tweet ID</th>\n",
       "      <th>Tweet Text</th>\n",
       "      <th>Label Expert</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>513808166778597376</td>\n",
       "      <td>RT @chicagotribune: Families of victims of  Ma...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>626547631649521664</td>\n",
       "      <td>RT @JulieBishopMP: Only one hand was raised in...</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>489905742724726784</td>\n",
       "      <td>RT @steve_hawkes: Expert Anne Applebaum says M...</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>490526008865345600</td>\n",
       "      <td>RT @usembassykl: FULL TRANSCRIPT: Statement by...</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>581217363703496704</td>\n",
       "      <td>#Ukraine shot down #MH17 . https://t.co/roh5vf...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>\n",
       "    <div class=\"colab-df-buttons\">\n",
       "\n",
       "  <div class=\"colab-df-container\">\n",
       "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-72e32c84-e0d0-4a40-8277-c1bed5ab75a8')\"\n",
       "            title=\"Convert this dataframe to an interactive table.\"\n",
       "            style=\"display:none;\">\n",
       "\n",
       "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
       "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
       "  </svg>\n",
       "    </button>\n",
       "\n",
       "  <style>\n",
       "    .colab-df-container {\n",
       "      display:flex;\n",
       "      gap: 12px;\n",
       "    }\n",
       "\n",
       "    .colab-df-convert {\n",
       "      background-color: #E8F0FE;\n",
       "      border: none;\n",
       "      border-radius: 50%;\n",
       "      cursor: pointer;\n",
       "      display: none;\n",
       "      fill: #1967D2;\n",
       "      height: 32px;\n",
       "      padding: 0 0 0 0;\n",
       "      width: 32px;\n",
       "    }\n",
       "\n",
       "    .colab-df-convert:hover {\n",
       "      background-color: #E2EBFA;\n",
       "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
       "      fill: #174EA6;\n",
       "    }\n",
       "\n",
       "    .colab-df-buttons div {\n",
       "      margin-bottom: 4px;\n",
       "    }\n",
       "\n",
       "    [theme=dark] .colab-df-convert {\n",
       "      background-color: #3B4455;\n",
       "      fill: #D2E3FC;\n",
       "    }\n",
       "\n",
       "    [theme=dark] .colab-df-convert:hover {\n",
       "      background-color: #434B5C;\n",
       "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
       "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
       "      fill: #FFFFFF;\n",
       "    }\n",
       "  </style>\n",
       "\n",
       "    <script>\n",
       "      const buttonEl =\n",
       "        document.querySelector('#df-72e32c84-e0d0-4a40-8277-c1bed5ab75a8 button.colab-df-convert');\n",
       "      buttonEl.style.display =\n",
       "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
       "\n",
       "      async function convertToInteractive(key) {\n",
       "        const element = document.querySelector('#df-72e32c84-e0d0-4a40-8277-c1bed5ab75a8');\n",
       "        const dataTable =\n",
       "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
       "                                                    [key], {});\n",
       "        if (!dataTable) return;\n",
       "\n",
       "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
       "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
       "          + ' to learn more about interactive tables.';\n",
       "        element.innerHTML = '';\n",
       "        dataTable['output_type'] = 'display_data';\n",
       "        await google.colab.output.renderOutput(dataTable, element);\n",
       "        const docLink = document.createElement('div');\n",
       "        docLink.innerHTML = docLinkHtml;\n",
       "        element.appendChild(docLink);\n",
       "      }\n",
       "    </script>\n",
       "  </div>\n",
       "\n",
       "\n",
       "<div id=\"df-ab0e7508-c03c-4b32-ade6-f9a8b0b399b6\">\n",
       "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-ab0e7508-c03c-4b32-ade6-f9a8b0b399b6')\"\n",
       "            title=\"Suggest charts\"\n",
       "            style=\"display:none;\">\n",
       "\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
       "     width=\"24px\">\n",
       "    <g>\n",
       "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
       "    </g>\n",
       "</svg>\n",
       "  </button>\n",
       "\n",
       "<style>\n",
       "  .colab-df-quickchart {\n",
       "      --bg-color: #E8F0FE;\n",
       "      --fill-color: #1967D2;\n",
       "      --hover-bg-color: #E2EBFA;\n",
       "      --hover-fill-color: #174EA6;\n",
       "      --disabled-fill-color: #AAA;\n",
       "      --disabled-bg-color: #DDD;\n",
       "  }\n",
       "\n",
       "  [theme=dark] .colab-df-quickchart {\n",
       "      --bg-color: #3B4455;\n",
       "      --fill-color: #D2E3FC;\n",
       "      --hover-bg-color: #434B5C;\n",
       "      --hover-fill-color: #FFFFFF;\n",
       "      --disabled-bg-color: #3B4455;\n",
       "      --disabled-fill-color: #666;\n",
       "  }\n",
       "\n",
       "  .colab-df-quickchart {\n",
       "    background-color: var(--bg-color);\n",
       "    border: none;\n",
       "    border-radius: 50%;\n",
       "    cursor: pointer;\n",
       "    display: none;\n",
       "    fill: var(--fill-color);\n",
       "    height: 32px;\n",
       "    padding: 0;\n",
       "    width: 32px;\n",
       "  }\n",
       "\n",
       "  .colab-df-quickchart:hover {\n",
       "    background-color: var(--hover-bg-color);\n",
       "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
       "    fill: var(--button-hover-fill-color);\n",
       "  }\n",
       "\n",
       "  .colab-df-quickchart-complete:disabled,\n",
       "  .colab-df-quickchart-complete:disabled:hover {\n",
       "    background-color: var(--disabled-bg-color);\n",
       "    fill: var(--disabled-fill-color);\n",
       "    box-shadow: none;\n",
       "  }\n",
       "\n",
       "  .colab-df-spinner {\n",
       "    border: 2px solid var(--fill-color);\n",
       "    border-color: transparent;\n",
       "    border-bottom-color: var(--fill-color);\n",
       "    animation:\n",
       "      spin 1s steps(1) infinite;\n",
       "  }\n",
       "\n",
       "  @keyframes spin {\n",
       "    0% {\n",
       "      border-color: transparent;\n",
       "      border-bottom-color: var(--fill-color);\n",
       "      border-left-color: var(--fill-color);\n",
       "    }\n",
       "    20% {\n",
       "      border-color: transparent;\n",
       "      border-left-color: var(--fill-color);\n",
       "      border-top-color: var(--fill-color);\n",
       "    }\n",
       "    30% {\n",
       "      border-color: transparent;\n",
       "      border-left-color: var(--fill-color);\n",
       "      border-top-color: var(--fill-color);\n",
       "      border-right-color: var(--fill-color);\n",
       "    }\n",
       "    40% {\n",
       "      border-color: transparent;\n",
       "      border-right-color: var(--fill-color);\n",
       "      border-top-color: var(--fill-color);\n",
       "    }\n",
       "    60% {\n",
       "      border-color: transparent;\n",
       "      border-right-color: var(--fill-color);\n",
       "    }\n",
       "    80% {\n",
       "      border-color: transparent;\n",
       "      border-right-color: var(--fill-color);\n",
       "      border-bottom-color: var(--fill-color);\n",
       "    }\n",
       "    90% {\n",
       "      border-color: transparent;\n",
       "      border-bottom-color: var(--fill-color);\n",
       "    }\n",
       "  }\n",
       "</style>\n",
       "\n",
       "  <script>\n",
       "    async function quickchart(key) {\n",
       "      const quickchartButtonEl =\n",
       "        document.querySelector('#' + key + ' button');\n",
       "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
       "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
       "      try {\n",
       "        const charts = await google.colab.kernel.invokeFunction(\n",
       "            'suggestCharts', [key], {});\n",
       "      } catch (error) {\n",
       "        console.error('Error during call to suggestCharts:', error);\n",
       "      }\n",
       "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
       "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
       "    }\n",
       "    (() => {\n",
       "      let quickchartButtonEl =\n",
       "        document.querySelector('#df-ab0e7508-c03c-4b32-ade6-f9a8b0b399b6 button');\n",
       "      quickchartButtonEl.style.display =\n",
       "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
       "    })();\n",
       "  </script>\n",
       "</div>\n",
       "\n",
       "  <div id=\"id_c26af17a-13b3-49c1-a4f8-303a632a6876\">\n",
       "    <style>\n",
       "      .colab-df-generate {\n",
       "        background-color: #E8F0FE;\n",
       "        border: none;\n",
       "        border-radius: 50%;\n",
       "        cursor: pointer;\n",
       "        display: none;\n",
       "        fill: #1967D2;\n",
       "        height: 32px;\n",
       "        padding: 0 0 0 0;\n",
       "        width: 32px;\n",
       "      }\n",
       "\n",
       "      .colab-df-generate:hover {\n",
       "        background-color: #E2EBFA;\n",
       "        box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
       "        fill: #174EA6;\n",
       "      }\n",
       "\n",
       "      [theme=dark] .colab-df-generate {\n",
       "        background-color: #3B4455;\n",
       "        fill: #D2E3FC;\n",
       "      }\n",
       "\n",
       "      [theme=dark] .colab-df-generate:hover {\n",
       "        background-color: #434B5C;\n",
       "        box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
       "        filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
       "        fill: #FFFFFF;\n",
       "      }\n",
       "    </style>\n",
       "    <button class=\"colab-df-generate\" onclick=\"generateWithVariable('example_tweets')\"\n",
       "            title=\"Generate code using this dataframe.\"\n",
       "            style=\"display:none;\">\n",
       "\n",
       "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
       "       width=\"24px\">\n",
       "    <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
       "  </svg>\n",
       "    </button>\n",
       "    <script>\n",
       "      (() => {\n",
       "      const buttonEl =\n",
       "        document.querySelector('#id_c26af17a-13b3-49c1-a4f8-303a632a6876 button.colab-df-generate');\n",
       "      buttonEl.style.display =\n",
       "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
       "\n",
       "      buttonEl.onclick = () => {\n",
       "        google.colab.notebook.generateWithVariable('example_tweets');\n",
       "      }\n",
       "      })();\n",
       "    </script>\n",
       "  </div>\n",
       "\n",
       "    </div>\n",
       "  </div>\n"
      ],
      "text/plain": [
       "             Tweet ID                                         Tweet Text  \\\n",
       "0  513808166778597376  RT @chicagotribune: Families of victims of  Ma...   \n",
       "1  626547631649521664  RT @JulieBishopMP: Only one hand was raised in...   \n",
       "2  489905742724726784  RT @steve_hawkes: Expert Anne Applebaum says M...   \n",
       "3  490526008865345600  RT @usembassykl: FULL TRANSCRIPT: Statement by...   \n",
       "4  581217363703496704  #Ukraine shot down #MH17 . https://t.co/roh5vf...   \n",
       "\n",
       "   Label Expert  \n",
       "0             1  \n",
       "1             3  \n",
       "2             2  \n",
       "3             3  \n",
       "4             1  "
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "example_tweets = pd.read_csv('tweet_examples.csv', index_col = 0)\n",
    "example_tweets"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "EHQKd-NNaitW"
   },
   "source": [
    "### Chat-gpt 3\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "sd8C_DIDaoJq"
   },
   "outputs": [],
   "source": [
    "# insert openai key\n",
    "openai.api_key = \"your-api-key-here\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "vaHfKkToXTqd"
   },
   "outputs": [],
   "source": [
    "tweet1 = \"1. '#Ukraine MH17 may be CIA false flag and it ain't flying Alex Jones' Infowars: There's a war on for your mind!'\\nCategory: Pro-Russian\"\n",
    "tweet2 = \"2. 'RT @FrankfurtFinanz: My prediction: faked #MH17 investigation report blaming Russia will be released hours before NATO meeting in Wales'\\nCategory: Pro-Russian\"\n",
    "tweet3 = \"3. 'Excellent technical analysis of Why a #Russian BUK missile shot down# MH17'\\nCategory: Pro-Ukrainian\"\n",
    "tweet4 = \"4. 'MH17 shootdown may have been a 'mistake' by pro-Russian rebels: US - Hindustan Times'\\nCategory: Pro-Ukrainian\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "2D4GHSVfZxVJ",
    "outputId": "3af2f39e-b86d-4312-9d45-0b0ddff2b75c"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Here are instructions for the classification of three categories: \n",
      "'Pro-Russian'. This category applies in the following cases: \n",
      "• The tweet states or implies that Ukrainian authorities, NATO or EU countries are responsible for the shoot-down of flight MH-17. \n",
      "• The tweet states or implies that Russian authorities or Russian-backed separatists are not responsible for the shoot-down, but does not put a blame on a specific entity. \n",
      "'Pro-Ukrainian'. This category applies in the following cases: \n",
      "• The tweet states or implies that Putin, Russian authorities or Russian-backed separatists are responsible for the shoot-down of flight MH-17. \n",
      "• The tweet states or implies that Ukrainian authorities are not responsible for the shootdown, but does not put a blame on a specific entity.\n",
      "'Unrelated'. For all other cases. \n",
      "\n",
      "Here are examples for the Pro-Russian and Pro-Ukrainian tweets:\n",
      "1. '#Ukraine MH17 may be CIA false flag and it ain't flying Alex Jones' Infowars: There's a war on for your mind!'\n",
      "Category: Pro-Russian\n",
      "2. 'RT @FrankfurtFinanz: My prediction: faked #MH17 investigation report blaming Russia will be released hours before NATO meeting in Wales'\n",
      "Category: Pro-Russian\n",
      "3. 'Excellent technical analysis of Why a #Russian BUK missile shot down# MH17'\n",
      "Category: Pro-Ukrainian\n",
      "4. 'MH17 shootdown may have been a 'mistake' by pro-Russian rebels: US - Hindustan Times'\n",
      "Category: Pro-Ukrainian\n",
      "\n",
      "With these instructions in mind, return the categories of the following tweets:\n"
     ]
    }
   ],
   "source": [
    "# This is the last prompt I worked with\n",
    "start_prompt = f\"Here are instructions for the classification of three categories: \\n'Pro-Russian'. This category applies in the following cases: \\n• The tweet states or implies that Ukrainian authorities, NATO or EU countries are responsible for the shoot-down of flight MH-17. \\n• The tweet states or implies that Russian authorities or Russian-backed separatists are not responsible for the shoot-down, but does not put a blame on a specific entity. \\n'Pro-Ukrainian'. This category applies in the following cases: \\n• The tweet states or implies that Putin, Russian authorities or Russian-backed separatists are responsible for the shoot-down of flight MH-17. \\n• The tweet states or implies that Ukrainian authorities are not responsible for the shootdown, but does not put a blame on a specific entity.\\n'Unrelated'. For all other cases. \\n\\nHere are examples for the Pro-Russian and Pro-Ukrainian tweets:\\n{tweet1}\\n{tweet2}\\n{tweet3}\\n{tweet4}\\n\\nWith these instructions in mind, return the categories of the following tweets:\"\n",
    "print(start_prompt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "qHt5gEGZZ6D4"
   },
   "outputs": [],
   "source": [
    "def multiple_tweets_prompt(tweets, startprompt = start_prompt):\n",
    "\n",
    "  prompt = startprompt\n",
    "\n",
    "\n",
    "  # Clean every tweet and add to the prompt\n",
    "  counter = 1\n",
    "  for tweet in tweets:\n",
    "    tweet = re.sub(r'\"', \"'\", tweet)\n",
    "    tweet = f\"\\n {counter}: '{tweet}''.\"\n",
    "\n",
    "    prompt = prompt + tweet\n",
    "    counter += 1\n",
    "\n",
    "  return prompt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "QuBH_rB9ZxTy"
   },
   "outputs": [],
   "source": [
    "def multiple_classifier(dataset, nr_groups,tokenmax=100):\n",
    "\n",
    "  gpt_response, prompts, batches_list, probabilities = [], [], [], []\n",
    "\n",
    "\n",
    "  for group in np.array_split(dataset,nr_groups):\n",
    "    batch = group['V10']\n",
    "\n",
    "    unique_prompt = multiple_tweets_prompt(batch)\n",
    "\n",
    "    response = openai.Completion.create(\n",
    "      model = \"text-davinci-003\",\n",
    "      prompt = unique_prompt,\n",
    "      temperature=0,\n",
    "      logprobs = 3,\n",
    "      max_tokens=tokenmax,\n",
    "      top_p=1,\n",
    "      frequency_penalty=0.5,\n",
    "      presence_penalty=0\n",
    "    )\n",
    "\n",
    "\n",
    "    classification = response['choices'][0]['text']\n",
    "    probability = response['choices'][0]['logprobs']\n",
    "\n",
    "    batches_list.append(batch)\n",
    "    gpt_response.append(classification)\n",
    "    prompts.append(unique_prompt)\n",
    "    probabilities.append(probability)\n",
    "\n",
    "\n",
    "    # Avoiding rate limits\n",
    "    sleep(1)\n",
    "\n",
    "  dataframe = pd.DataFrame(\n",
    "      {'Tweets': batches_list,\n",
    "       'Prompts':prompts,\n",
    "      'GPT response': gpt_response,\n",
    "       'Probability': probabilities})\n",
    "\n",
    "  return dataframe\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "JThFiwgNZxRS"
   },
   "outputs": [],
   "source": [
    "def unpack_results(predictions, dataset):\n",
    "\n",
    "  re_categories, numbered_classes = [],[]\n",
    "\n",
    "  for i in range(len(predictions)):\n",
    "\n",
    "    original_tweets = predictions['Tweets'][i]\n",
    "\n",
    "    response_text = predictions['GPT response'][i]\n",
    "\n",
    "    results = re.findall(r'(?:Pro-[A-Za-z]+|Unrelated)', response_text)\n",
    "\n",
    "    if len(results) == len(original_tweets):\n",
    "\n",
    "      for number, tweet in enumerate(original_tweets):\n",
    "\n",
    "        class_ = results[number]\n",
    "\n",
    "        re_categories.append(class_)\n",
    "\n",
    "    elif len(results) != len(original_tweets):\n",
    "\n",
    "      for tweet in original_tweets:\n",
    "\n",
    "        class_ = 'Unknown'\n",
    "\n",
    "        re_categories.append(class_)\n",
    "\n",
    "      print(i)\n",
    "\n",
    "\n",
    "  dataset['GPT Predictions'] = re_categories\n",
    "\n",
    "\n",
    "  for response in dataset['GPT Predictions']:\n",
    "    if 'Unrelated' in response:\n",
    "      numbered_classes.append(3)\n",
    "    if 'Pro-Ukrainian' in response:\n",
    "      numbered_classes.append(2)\n",
    "    if 'Pro-Russian' in response:\n",
    "      numbered_classes.append(1)\n",
    "    if 'Unknown' in response:\n",
    "      numbered_classes.append(0)\n",
    "\n",
    "  dataset['Predicted Category'] = numbered_classes\n",
    "  dataset = dataset.rename(columns={\"V15\": \"Category\"})\n",
    "\n",
    "  return dataset\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "SBBYn44RZxO8"
   },
   "outputs": [],
   "source": [
    "prediction = multiple_classifier(sample,30,150)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Because the original tweet text is not included (due to Twitter TOS), the confusion matrix below refers to the results dataset imported earlier in the file - same goes for the other models. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 449
    },
    "id": "dJrKN0oHjwzh",
    "outputId": "fc6c26bb-0b5d-4670-bed2-19efd9e70279",
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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4oKMjAy9+sSAioiIiIzHgEN+pRPNH6VJkyaIj49HTk4Ovv/+ewwdOhQHDhyQ2QltDKiIiIioVrOwsECjRo0AAG3btsXx48exfPlyDBo0CIWFhcjOztbKUmVmZsLV1VWvc3AOFRERERlN6ZCf3E0OtVqNgoICtG3bFubm5oiOjtbsS0xMRGpqKgICAvRqkxkqIiIiMh4jL+w5bdo09OrVC56enrhz5w42bNiA/fv347fffoO9vT2GDRuGCRMmwMnJCUqlEmPGjEFAQIBed/gBDKiIiIjIiIz96JmbN29iyJAhSE9Ph729PVq2bInffvsNPXr0AAAsXboUJiYmGDBgAAoKChAUFIQvvvhC7z4xoCIiIqJaa82aNQ/db2lpiZUrV2LlypWyzsOAioiIiIynlj7LjwEVERERGZXcIb/qiHf5EREREcnEDBUREREZjxAlm9w2qhkGVERERGQ0xr7Lz1g45EdEREQkEzNUREREZDy8y4+IiIhIHkldsslto7rhkB8RERGRTMxQERERkfFwyI+IiIhIntp6lx8DKiIiIjKeWroOFedQEREREcnEDBUREREZDYf8iIiIiOSqpZPSOeRHREREJBMzVERERGQ0HPIjIiIikot3+RERERFReZihIiIiIqPhkB8RERGRXLzLj4iIiIjKwwwVERERGQ2H/IiIiIjkUouSTW4b1QwDKiIiIjIezqEiIiIiovIwQ0VERERGI8EAc6gM0hPDYkBFRERExsOV0omIiIioPMxQERERkdFw2QQiIiIiuXiXHxERERGVhxkqIiIiMhpJCEgyJ5XLPb4yMENFRERExqM20Kaj8PBwtGvXDnZ2dqhbty769euHxMRErTr5+fkIDQ2Fs7MzbG1tMWDAAGRmZup1WQyoiIiIqNY6cOAAQkNDcfToUezZswdFRUV48cUXcffuXU2d8ePHY8eOHdiyZQsOHDiAGzduoH///nqdh0N+REREZDSGHPLLzc3VKlcoFFAoFFplu3bt0nodFRWFunXrIi4uDs8//zxycnKwZs0abNiwAd27dwcAREZGws/PD0ePHkWHDh106hMzVERERGQ8wkAbAA8PD9jb22u28PDwR54+JycHAODk5AQAiIuLQ1FREQIDAzV1fH194enpiZiYGJ0vixkqIiIiMh4DrpSelpYGpVKpKf53durf1Go1xo0bh06dOqF5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RGQ8agByl+urhmuBMaAiIiIio+FdfkRERERULmaoiIiIyHhq6aR0BlRERERkPLU0oOKQHxEREZFMzFARERGR8dTSDBUDKiIiIjIeLptAREREJA+XTSAiIiKicjFDRURERMbDOVREREREMqkFIMkMiNTVL6DikB8RERGRTMxQERERkfFwyI+IiIhILgMEVKh+ARWH/IiIiIhkYoaKiIiIjIdDfkREREQyqQVkD9nxLj8iIiKi2ocZKiIiIjIeoS7Z5LZRzTCgIiIiIuPhHCoiIiIimTiHioiIiKjm+eOPP9C3b1+4u7tDkiRs27ZNa78QAjNmzICbmxusrKwQGBiIpKQkvc7BgIqIiIiMp3TIT+6mh7t378Lf3x8rV64sd//ChQsRERGB1atXIzY2FjY2NggKCkJ+fr7O5+CQHxERERmPgAHmUJX8k5ubq1WsUCigUCjKVO/Vqxd69epVflNCYNmyZfj4448RHBwMAFi3bh1cXFywbds2vP766zp1iRkqIiIiqpE8PDxgb2+v2cLDw/VuIzk5GRkZGQgMDNSU2dvbo3379oiJidG5HWaoiIiIyHgMeJdfWloalEqlpri87NSjZGRkAABcXFy0yl1cXDT7dMGAioiIiIxHrQYgcx0pdcnxSqVSK6CqShzyIyIioieWq6srACAzM1OrPDMzU7NPFwyoiIiIyHiq4C6/h/H29oarqyuio6M1Zbm5uYiNjUVAQIDO7XDIj4iIiIynClZKz8vLw+XLlzWvk5OTER8fDycnJ3h6emLcuHGYN28eGjduDG9vb0yfPh3u7u7o16+fzudgQEVERES12okTJ9CtWzfN6wkTJgAAhg4diqioKEyePBl3797FyJEjkZ2djeeeew67du2CpaWlzudgQEVERETGUwWPnunatSvEQ7JakiRhzpw5mDNnzmN3iQEVERERGY0Qaggh7y4/ucdXBgZUREREZDxCyH+4sQEnpRsK7/IjIiIikokZKiIiIjIeYYA5VNUwQ8WAioiIiIxHrQYkmXOgquEcKg75EREREcnEDBUREREZD4f8iIiIiOQRajWEzCG/6rhsAof8iIiIiGRihoqIiIiMh0N+RERERDKpBSDVvoCKQ35EREREMjFDRURERMYjBAC561BVvwwVAyoiIiIyGqEWEDKH/AQDKiIiInqiCTXkZ6i4bAIRERFRrcMMFRER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\n",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "confusion_matrix = metrics.confusion_matrix(sample['Label Expert'], sample['Label GPT-3'])\n",
    "\n",
    "cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = ['Disinfo', 'Counter-Disinfo','Unrelated'])\n",
    "\n",
    "cm_display.plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "IajCPqu2m6HD"
   },
   "source": [
    "### GPT-4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "07Ym-8OIn8Bd"
   },
   "outputs": [],
   "source": [
    "Tweet_1 = \"'#Ukraine MH17 may be CIA false flag and it ain't flying Alex Jones' Infowars: There's a war on for your mind!'\"\n",
    "Category_1 = \"Pro-Russian\"\n",
    "Tweet_2 = \"'RT @FrankfurtFinanz: My prediction: faked #MH17 investigation report blaming Russia will be released hours before NATO meeting in Wales'\"\n",
    "Category_2 = \"Pro-Russian\"\n",
    "Tweet_3 = \"'Excellent technical analysis of Why a #Russian BUK missile shot down# MH17'\"\n",
    "Category_3 = \"Pro-Ukrainian\"\n",
    "Tweet_4 = \"'MH17 shootdown may have been a 'mistake' by pro-Russian rebels: US - Hindustan Times'\"\n",
    "Category_4 = \"Pro-Ukrainian\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "L2LPb_qin8l7"
   },
   "outputs": [],
   "source": [
    "system_message = \"You are a classifier and will classify Tweets into these three categories: \\n'Pro-Russian'. This category applies in the following cases: \\n• The tweet states or implies that Ukrainian authorities, NATO or EU countries are responsible for the shoot-down of flight MH-17. \\n• The tweet states or implies that Russian authorities or Russian-backed separatists are not responsible for the shoot-down, but does not put a blame on a specific entity. \\n'Pro-Ukrainian'. This category applies in the following cases: \\n• The tweet states or implies that Putin, Russian authorities or Russian-backed separatists are responsible for the shoot-down of flight MH-17. \\n• The tweet states or implies that Ukrainian authorities are not responsible for the shootdown, but does not put a blame on a specific entity.\\n'Unrelated'. For all other cases. \\nGive the category for each Tweet individually in a numbered fashion.\"\n",
    "print(system_message)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "mpOzSlaCn8j2"
   },
   "outputs": [],
   "source": [
    "def gpt4_prompt_creator(dataset):\n",
    "\n",
    "  prompt = ''\n",
    "\n",
    "  # Clean every tweet and add to the prompt\n",
    "  counter = 1\n",
    "  for tweet in dataset:\n",
    "    tweet = re.sub(r'\"', \"'\", tweet)\n",
    "    tweet = f\"\\n {counter}: '{tweet}'.\"\n",
    "\n",
    "    prompt = prompt + tweet\n",
    "    counter += 1\n",
    "\n",
    "  return prompt\n",
    "\n",
    "\n",
    "def gpt4_classifier(dataset, nr_groups = 1):\n",
    "\n",
    "  gpt_response, final_messages, tweet_batch = [], [], []\n",
    "\n",
    "  for group in np.array_split(dataset, nr_groups):\n",
    "    batch = group['V10']\n",
    "\n",
    "    final_message = gpt4_prompt_creator(batch)\n",
    "    response = openai.ChatCompletion.create(\n",
    "      model = \"gpt-4\",\n",
    "      messages=[\n",
    "            {\"role\": \"system\", \"content\": system_message},\n",
    "            {\"role\": \"user\", \"content\": Tweet_1},\n",
    "            {\"role\": \"assistant\", \"content\": Category_1},\n",
    "            {\"role\": \"user\", \"content\": Tweet_2},\n",
    "            {\"role\": \"assistant\", \"content\": Category_2},\n",
    "            {\"role\": \"user\", \"content\": Tweet_3},\n",
    "            {\"role\": \"assistant\", \"content\": Category_3},\n",
    "            {\"role\": \"user\", \"content\": Tweet_4},\n",
    "            {\"role\": \"assistant\", \"content\": Category_4},\n",
    "            {\"role\": \"user\", \"content\": final_message},\n",
    "        ],\n",
    "      temperature = 0\n",
    "    )\n",
    "\n",
    "    classification = response['choices'][0][\"message\"][\"content\"]\n",
    "\n",
    "    gpt_response.append(classification)\n",
    "    final_messages.append(final_message)\n",
    "    tweet_batch.append(batch)\n",
    "\n",
    "    # Avoiding rate limits\n",
    "    sleep(3)\n",
    "\n",
    "\n",
    "  dataframe = pd.DataFrame(\n",
    "  {'Tweets': tweet_batch,\n",
    "    'Last Message':final_messages,\n",
    "    'GPT response': gpt_response})\n",
    "\n",
    "  return dataframe\n",
    "\n",
    "def unpack_results(predictions, dataset):\n",
    "\n",
    "  re_categories, numbered_classes = [],[]\n",
    "\n",
    "  for i in range(len(predictions)):\n",
    "\n",
    "    original_tweets = predictions['Tweets'][i]\n",
    "\n",
    "    response_text = predictions['GPT response'][i]\n",
    "\n",
    "    results = re.findall(r'(?:Pro-[A-Za-z]+|Unrelated)', response_text)\n",
    "\n",
    "    if len(results) == len(original_tweets):\n",
    "\n",
    "      for number, tweet in enumerate(original_tweets):\n",
    "\n",
    "        class_ = results[number]\n",
    "\n",
    "        re_categories.append(class_)\n",
    "\n",
    "    elif len(results) != len(original_tweets):\n",
    "\n",
    "      for tweet in original_tweets:\n",
    "\n",
    "        class_ = 'Unknown'\n",
    "\n",
    "        re_categories.append(class_)\n",
    "\n",
    "      print(i)\n",
    "\n",
    "\n",
    "  dataset['GPT Predictions'] = re_categories\n",
    "\n",
    "\n",
    "  for response in dataset['GPT Predictions']:\n",
    "    if 'Unrelated' in response:\n",
    "      numbered_classes.append(3)\n",
    "    if 'Pro-Ukrainian' in response:\n",
    "      numbered_classes.append(2)\n",
    "    if 'Pro-Russian' in response:\n",
    "      numbered_classes.append(1)\n",
    "    if 'Unknown' in response:\n",
    "      numbered_classes.append(0)\n",
    "\n",
    "  dataset['Predicted Category'] = numbered_classes\n",
    "  dataset = dataset.rename(columns={\"V15\": \"Category\"})\n",
    "\n",
    "  return dataset\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "V0SQDPYBoQ_o"
   },
   "outputs": [],
   "source": [
    "prediction = gpt4_classifier(sample, 15)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "BzTJ4Aq0oTGF"
   },
   "outputs": [],
   "source": [
    "sample_predict = unpack_results(prediction,sample)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 451
    },
    "id": "_CmILPOBm8gd",
    "outputId": "24df0531-ee15-4039-9a40-b86d2ff3897d",
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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UjoTKiIiItIfA02oOORHREREJBIrVERERKQ/BlqhYkJFRERE+sNlE4iIiIjE4bIJRERERFQpVqiIiIhIfziHioiIiEgkpQBIRCZEypqXUHHIj4iIiEgkVqiIiIhIfzjkR0RERCSWDhIq1LyEikN+RERERCKxQkVERET6wyE/IiIiIpGUAkQP2fEuPyIiIiL9+u2339CnTx84OTlBIpEgJiZG7bggCJg9ezYcHR1hbm6OwMBApKSkaHUOJlRERESkP4JSN5sWHjx4AD8/P6xcubLS44sXL0ZkZCTWrFmDhIQEWFpaIigoCIWFhRqfg0N+REREpD/VMIeqV69e6NWr1xO6ErBs2TLMmjULISEhAID169fD3t4eMTExeOuttzQ6BytUREREpD9KQTcbgPz8fLWtqKhI63DS0tKQnZ2NwMBA1T65XI62bdsiPj5e436YUBEREVGt5OLiArlcrtoiIiK07iM7OxsAYG9vr7bf3t5edUwTHPIjIiIi/dHhkF9mZiZkMplqt1QqFdevCKxQERERkf4I+CepeuatrCuZTKa2PUtC5eDgAADIyclR25+Tk6M6pgkmVERERPTc8vDwgIODA2JjY1X78vPzkZCQgICAAI374ZAfERER6U813OVXUFCAa9euqV6npaXh7NmzsLW1haurKyZMmIAFCxagUaNG8PDwQHh4OJycnNC3b1+Nz8GEioiIiPRHqQSg3TpSlfehudOnT6Nbt26q15MmTQIADBkyBNHR0Zg2bRoePHiAUaNGITc3Fx07dsSePXtgZmam8TmYUBEREZFB69q1K4SnVLUkEgnmzZuHefPmPfM5mFARERGR/vDhyEREREQiGWhCxbv8iIiIiERihYqIiIj0RylAtZCUqD5qFiZUREREpDeCoIQgiLvLT+z7qwITKiIiItIfQRBfYeIcKiIiIiLDwwoVERER6Y+ggzlUNbBCxYSKiIiI9EepBCQi50DVwDlUHPIjIiIiEokVKiIiItIfDvkRERERiSMolRBEDvnVxGUTOORHREREJBIrVERERKQ/HPIjIiIiEkkpABLDS6g45EdEREQkEitUREREpD+CAEDsOlQ1r0LFhIqIiIj0RlAKEEQO+QlMqIiIiOi5JighvkLFZROIiIiIDA4rVERERKQ3HPIjIiIiEstAh/yYUJFOlP+2UIoS0eu1Uc1nJBRXdwik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wEA4OjqiWbNmmDFjBnx9fXH+/Hl069at0vYWFha4cuUK+vfvDy8vL4waNQqhoaH44IMPnun8TxIVFYVWrVqhd+/eCAgIgCAI+PXXX7Wu8ulLw4YN8dtvv+HKlSsIDAxE27ZtsWXLFmzduhXBwcGi+m7evDni4uJw9epVdOrUCf7+/pg9ezacnJwqbe/n54cvvvgCn376KZo2bYoNGzYgIiJCrU379u3x4YcfYuDAgahXrx4WL14MoOxzHzx4MCZPngxvb2/07dsXp06dUg0ttmvXDt988w2WL18OPz8/7Nu375mTeap+EkGTmaNERERE9ESsUBERERGJxISKiIiISCQmVEREREQiMaEiIiIiEokJFREREZFITKiIiIiIRGJCRURERCQSEyoiMhhDhw5F3759Va+7du2KCRMm6D2Ow4cPQyKRIDc394ltJBIJYmJiNO5zzpw5aNGihai40tPTIZFIcPbsWVH9EFFFTKiIqEoNHToUEokEEokEpqam8PT0xLx581BaWlrl596+fTvmz5+vUVtNkiAioifhw5GJqMoFBwcjKioKRUVF+PXXXxEaGgoTExPMnDmzQtvi4mKYmprq5Ly6eog1EdF/YYWKiKqcVCqFg4MD3NzcMHr0aAQGBmLHjh0A/hmmW7hwIZycnODt7Q0AyMzMxIABA2BjYwNbW1uEhIQgPT1d1adCocCkSZNgY2MDOzs7TJs2Df9+kta/h/yKioowffp0uLi4QCqVwtPTE2vXrkV6errqeXt169aFRCJRPU9RqVQiIiICHh4eMDc3h5+fH3788Ue18/z666/w8vKCubk5unXrphanpqZPnw4vLy9YWFigYcOGCA8PR0lJSYV2X331FVxcXGBhYYEBAwYgLy9P7fi3334LX19fmJmZwcfHB6tWrdI6FiLSHhMqItI7c3NzFBcXq17HxsYiOTkZ+/fvx65du1BSUoKgoCBYW1vjyJEjOHbsGKysrBAcHKx635IlSxAdHY3//e9/OHr0KO7evYuffvrpqecdPHgwfvjhB0RGRiIpKQlfffUVrKys4OLigm3btgEAkpOTkZWVheXLlwMAIiIisH79eqxZswaXLl3CxIkT8e677yIuLg5AWeLXr18/9OnTB2fPnsWIESMwY8YMrT8Ta2trREdH4/Lly1i+fDm++eYbLF26VK3NtWvXsGXLFuzcuRN79uzB77//jjFjxqiOb9iwAbNnz8bChQuRlJSERYsWITw8HOvWrdM6HiLSkkBEVIWGDBkihISECIIgCEqlUti/f78glUqFKVOmqI7b29sLRUVFqvd89913gre3t6BUKlX7ioqKBHNzc2Hv3r2CIAiCo6OjsHjxYtXxkpISoUGDBqpzCYIgdOnSRRg/frwgCIKQnJwsABD2799faZyHDh0SAAj37t1T7SssLBQsLCyE48ePq7UdPny48PbbbwuCIAgzZ84UGjdurHZ8+vTpFfr6NwDCTz/99MTjn332mdCqVSvV648//lgwNjYW/vjjD9W+3bt3C0ZGRkJWVpYgCILw4osvChs3blTrZ/78+UJAQIAgCIKQlpYmABB+//33J56XiJ4N51ARUZXbtWsXrKysUFJSAqVSiXfeeQdz5sxRHW/WrJnavKlz587h2rVrsLa2VuunsLAQqampyMvLQ1ZWFtq2bas6VqdOHbRu3brCsF+5s2fPwtjYGF26dNE47mvXruHhw4fo2bOn2v7i4mL4+/sDAJKSktTiAICAgACNz1Fu8+bNiIyMRGpqKgoKClBaWgqZTKbWxtXVFc7OzmrnUSqVSE5OhrW1NVJTUzF8+HCMHDlS1aa0tBRyuVzreIhIO0yoiKjKdevWDatXr4apqSmcnJxQp476Pz2WlpZqrwsKCtCqVSts2LChQl/16tV7phjMzc21fk9BQQEA4JdfflFLZICyeWG6Eh8fj0GDBmHu3LkICgqCXC7Hpk2bsGTJEq1j/eabbyokeMbGxjqLlYgqx4SKiKqcpaUlPD09NW7fsmVLbN68GfXr169QpSnn6OiIhIQEdO7cGUBZJSYxMREtW7astH2zZs2gVCoRFxeHwMDACsfLK2QKhUK1r3HjxpBKpcjIyHhiZcvX11c1wb7ciRMn/vsiH3P8+HG4ubnho48+Uu27ceNGhXYZGRm4desWnJycVOcxMjKCt7c37O3t4eTkhOvXr2PQoEFanZ+IxOOkdCKqcQYNGoQXXngBISEhOHLkCNLS0nD48GGEhYXhjz/+AACMHz8en3zyCWJiYnDlyhWMGTPmqWtIubu7Y8iQIXj//fcRExOj6nPLli0AADc3N0gkEuzatQt//vknCgoKYG1tjSlTpmDixIlYt24dUlNTcebMGXz55Zeqid4ffvghUlJSMHXqVCQnJ2Pjxo2Ijo7W6nobNWqEjIwMbNq0CampqYiMjKx0gr2ZmRmGDBmCc+fO4ciRIwgLC8OAAQPg4OAAAJg7dy4iIiIQGRmJq1ev4sKFC4iKisIXX3yhVTxEpD0mVERU41hYWOC3336Dq6sr+vXrB19fXwwfPhyFhYWqitXkyZPx3nvvYciQIQgICIC1tTVef/31p/a7evVqvPHGGxgzZgx8fHwwcuRIPHjwAADg7OyMuXPnYsaMGbC3t8fYsWMBAPPnz0d4eDgiIiLg6+uL4OBg/PLLL/Dw8ABQNq9p27ZtiImJgZ+fH9asWYNFixZpdb2vvfYaJk6ciLFjx6JFixY4fvw4wsPDK7Tz9PREv3798Morr+Dll19G8+bN1ZZFGDFiBL799ltERUWhWbNm6NKlC6Kjo1WxElHVkQhPmsFJRERERBphhYqIiIhIJCZURERERCIxoSIiIiISiQkVERERkUhMqIiIiIhEYkJFREREJBITKiIiIiKRmFARERERicSEioiIiEgkJlREREREIjGhIiIiIhKJCRURERGRSP8PlVRY2+b2mS0AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "confusion_matrix = metrics.confusion_matrix(sample['Label Expert'], sample['Label GPT-4'])\n",
    "\n",
    "cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = ['Disinfo', 'Counter-Disinfo','Unrelated'])\n",
    "\n",
    "cm_display.plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Ag9kqVdhbhIr"
   },
   "source": [
    "### Llama 8b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "J8ZB_w0GaT_F"
   },
   "outputs": [],
   "source": [
    "HF_TOKEN = \"insert_llama-token-here\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "9Czqq4L1aT8x"
   },
   "outputs": [],
   "source": [
    "import json\n",
    "import torch\n",
    "from transformers import (AutoTokenizer,\n",
    "                          AutoModelForCausalLM,\n",
    "                          BitsAndBytesConfig,\n",
    "                          pipeline)\n",
    "\n",
    "\n",
    "model_name = \"meta-llama/Meta-Llama-3-8B-Instruct\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "GXOpk0etaT60"
   },
   "outputs": [],
   "source": [
    "bnb_config = BitsAndBytesConfig(\n",
    "    load_in_4bit=True\n",
    ")\n",
    "\n",
    "tokenizer = AutoTokenizer.from_pretrained(model_name,\n",
    "                                          token=HF_TOKEN)\n",
    "\n",
    "tokenizer.pad_token = tokenizer.eos_token"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "xH8s2pmwaT4Q"
   },
   "outputs": [],
   "source": [
    "model = AutoModelForCausalLM.from_pretrained(\n",
    "    model_name,\n",
    "    device_map=\"auto\",\n",
    "    quantization_config=bnb_config,\n",
    "    token=HF_TOKEN\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "zDpbJKT5aTzp"
   },
   "outputs": [],
   "source": [
    "text_generator = pipeline(\n",
    "    \"text-generation\",\n",
    "    return_full_text = False,\n",
    "    model=model,\n",
    "    tokenizer=tokenizer,\n",
    "    temperature = 0.01,\n",
    "    max_new_tokens=40\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "YuEqGV7RaTxX"
   },
   "outputs": [],
   "source": [
    "def get_response(prompt):\n",
    "  sequences = text_generator(prompt)\n",
    "  gen_text = sequences[0][\"generated_text\"]\n",
    "  return gen_text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "yg-bSLgjcTwF"
   },
   "outputs": [],
   "source": [
    "# these are the possible example tweets in the old prompt, I adjusted them a little based on where I put them in the prompt, so it cannot be copied one-to-one\n",
    "tweet1 = \"1. '#Ukraine MH17 may be CIA false flag and it ain't flying Alex Jones' Infowars: There's a war on for your mind!'\\nCategory: Pro-Russian\"\n",
    "tweet2 = \"2. 'RT @FrankfurtFinanz: My prediction: faked #MH17 investigation report blaming Russia will be released hours before NATO meeting in Wales'\\nCategory: Pro-Russian\"\n",
    "tweet3 = \"3. 'Excellent technical analysis of Why a #Russian BUK missile shot down# MH17'\\nCategory: Pro-Ukrainian\"\n",
    "tweet4 = \"4. 'MH17 shootdown may have been a 'mistake' by pro-Russian rebels: US - Hindustan Times'\\nCategory: Pro-Ukrainian\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "0BuvXEoDcTrA",
    "outputId": "32a0c075-662a-4f09-bcc3-f44e2ae8adf6"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Here are instructions for the classification of three categories: \n",
      "'Pro-Russian'. This category applies in the following cases: \n",
      "• The tweet states or implies that Ukrainian authorities, NATO or EU countries are responsible for the shoot-down of flight MH-17. \n",
      "• The tweet states or implies that Russian authorities or Russian-backed separatists are not responsible for the shoot-down, but does not put a blame on a specific entity. \n",
      "'Pro-Ukrainian'. This category applies in the following cases: \n",
      "• The tweet states or implies that Putin, Russian authorities or Russian-backed separatists are responsible for the shoot-down of flight MH-17. \n",
      "• The tweet states or implies that Ukrainian authorities are not responsible for the shootdown, but does not put a blame on a specific entity.\n",
      "'Unrelated'. For all other cases. \n",
      "\n",
      "Here are examples for the Pro-Russian and Pro-Ukrainian tweets:\n",
      "1. '#Ukraine MH17 may be CIA false flag and it ain't flying Alex Jones' Infowars: There's a war on for your mind!'\n",
      "Category: Pro-Russian\n",
      "2. 'RT @FrankfurtFinanz: My prediction: faked #MH17 investigation report blaming Russia will be released hours before NATO meeting in Wales'\n",
      "Category: Pro-Russian\n",
      "3. 'Excellent technical analysis of Why a #Russian BUK missile shot down# MH17'\n",
      "Category: Pro-Ukrainian\n",
      "4. 'MH17 shootdown may have been a 'mistake' by pro-Russian rebels: US - Hindustan Times'\n",
      "Category: Pro-Ukrainian\n",
      "\n",
      "With these instructions in mind, return ONLY the category for every tweet, in a numbered list:\n"
     ]
    }
   ],
   "source": [
    "prompt_dis = f\"Here are instructions for the classification of three categories: \\n'Pro-Russian'. This category applies in the following cases: \\n• The tweet states or implies that Ukrainian authorities, NATO or EU countries are responsible for the shoot-down of flight MH-17. \\n• The tweet states or implies that Russian authorities or Russian-backed separatists are not responsible for the shoot-down, but does not put a blame on a specific entity. \\n'Pro-Ukrainian'. This category applies in the following cases: \\n• The tweet states or implies that Putin, Russian authorities or Russian-backed separatists are responsible for the shoot-down of flight MH-17. \\n• The tweet states or implies that Ukrainian authorities are not responsible for the shootdown, but does not put a blame on a specific entity.\\n'Unrelated'. For all other cases. \\n\\nHere are examples for the Pro-Russian and Pro-Ukrainian tweets:\\n{tweet1}\\n{tweet2}\\n{tweet3}\\n{tweet4}\\n\\nWith these instructions in mind, return ONLY the category for every tweet, in a numbered list:\"\n",
    "print(prompt_dis)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "_57LBirUcToq"
   },
   "outputs": [],
   "source": [
    "def llama3_prompt_creator(dataset, startprompt):\n",
    "\n",
    "  prompt = startprompt\n",
    "\n",
    "  # Clean every tweet and add to the prompt\n",
    "  counter = 1\n",
    "\n",
    "  for tweet in dataset:\n",
    "\n",
    "    tweet = re.sub(r'\"', \"'\", tweet)\n",
    "    tweet = f\"\\n {counter}: '{tweet}'.\"\n",
    "\n",
    "    prompt = prompt + tweet\n",
    "    counter += 1\n",
    "\n",
    "\n",
    "  final_prompt = prompt + '\\nNow give the classes in a numbered list, NO additional information.'\n",
    "\n",
    "  return final_prompt\n",
    "\n",
    "def llama3_classifier(dataset, start_prompt, nr_groups = 1):\n",
    "\n",
    "  llama_response, final_messages, tweet_batch = [], [], []\n",
    "\n",
    "  for group in np.array_split(dataset, nr_groups):\n",
    "    batch = group['V10'] #use with real data\n",
    "\n",
    "    final_message = llama3_prompt_creator(batch, start_prompt)\n",
    "\n",
    "\n",
    "    llama3_response = get_response(final_message)\n",
    "\n",
    "\n",
    "    llama_response.append(llama3_response)\n",
    "    final_messages.append(final_message)\n",
    "    tweet_batch.append(batch)\n",
    "\n",
    "\n",
    "  dataframe = pd.DataFrame(\n",
    "  {'Tweets': tweet_batch,\n",
    "    'Last Message':final_messages,\n",
    "    'Llama response': llama_response})\n",
    "\n",
    "  return dataframe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "kKaLqjB6cTmT"
   },
   "outputs": [],
   "source": [
    "prediction = llama3_classifier(sample, prompt_dis, 60)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "VM4btBuAcjL1"
   },
   "outputs": [],
   "source": [
    "def unpack_results(predictions, dataset):\n",
    "\n",
    "  re_categories, numbered_classes = [],[]\n",
    "\n",
    "  for i in range(len(predictions)):\n",
    "\n",
    "    original_tweets = predictions['Tweets'][i]\n",
    "\n",
    "    response_text = predictions['Llama response'][i]\n",
    "\n",
    "    results = re.findall(r'(?:Pro-[A-Za-z]+|Unrelated)', response_text)\n",
    "\n",
    "    if len(results) == len(original_tweets):\n",
    "\n",
    "      for number, tweet in enumerate(original_tweets):\n",
    "\n",
    "        class_ = results[number]\n",
    "\n",
    "        re_categories.append(class_)\n",
    "\n",
    "    elif len(results) != len(original_tweets):\n",
    "\n",
    "      for tweet in original_tweets:\n",
    "\n",
    "        class_ = 'Unknown'\n",
    "\n",
    "        re_categories.append(class_)\n",
    "\n",
    "      print(i)\n",
    "\n",
    "\n",
    "  dataset['Llama Predictions'] = re_categories\n",
    "\n",
    "\n",
    "  for response in dataset['Llama Predictions']:\n",
    "    if 'Unrelated' in response:\n",
    "      numbered_classes.append(3)\n",
    "    if 'Pro-Ukrainian' in response:\n",
    "      numbered_classes.append(2)\n",
    "    if 'Pro-Russian' in response:\n",
    "      numbered_classes.append(1)\n",
    "    if 'Unknown' in response:\n",
    "      numbered_classes.append(0)\n",
    "\n",
    "  dataset['Predicted Category'] = numbered_classes\n",
    "  dataset = dataset.rename(columns={\"V15\": \"Category\"})\n",
    "\n",
    "  return dataset\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sample_predict = unpack_results(prediction, sample)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 449
    },
    "id": "mG2r8P2FcjG_",
    "outputId": "7ad86920-11a5-448c-ac7d-0790cb83be79"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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ioICpE75ulL7q6mXGgQ+evQoPvroI/j6+uLOndKVhH/66SccO3ZMq50jIiIiPaOnj57ROKD69ddf4e/vDzMzM/z111/KxR1zcnIwb948rXeQiIiIqLrTOKCaM2cOVq1ahdWrV6vMsWnfvj3OnTun1c4RERGRfhH92BktTGqvDBpPSk9KSkKnTp3KlVtbWyM7O1sbfSIiIiJ9pacrpWucoXJ0dMT169fLlR87dgz16tXTSqeIiIhIT3EOVakRI0YgNDQUp06dgkQiwd27d7FhwwaEhYXhiy++qIw+EhEREVVrGg/5TZo0CQqFAt27d0d+fj46deoEqVSKsLAwjBkzpjL6SERERHqCC3v+l0Qiwddff40vv/wS169fR15eHho1agRLS8vK6B8RERHpEz56RpWJiQmf9UZERESElwiounbtConk2bPrDx48KKpDREREpMe0seyBPmSomjdvrvK6uLgYCQkJuHTpEoYOHaqtfhEREZE+4pBfqSVLllRYPmPGDOTl5YnuEBEREVFN81LP8qvIRx99hB9//FFbzREREZE+0tN1qF56Uvq/xcXFwVTk06OJiIhIv3HZhP/q16+fymtBEJCRkYGzZ89i6tSpWusYERERUU2hcUBlbW2t8trAwAANGzbErFmz8NZbb2mtY0REREQ1hUYBlVwuxyeffIKmTZvC1ta2svpERERE+qqK7/L75ptvMHnyZISGhmLp0qUAgIKCAkyYMAGbNm1CYWEh/P398d1338HBwUHtdjWalG5oaIi33noL2dnZmhxGREREBOB/c6jEbi/jzJkz+P7779GsWTOV8nHjxmHXrl3YunUrjhw5grt375ab4vQiGt/l16RJE9y8eVPTw4iIiIi0Kjc3V2UrLCx8Zt28vDwMHjwYq1evVhlly8nJwdq1a7F48WJ069YNrVq1QlRUFE6cOIGTJ0+q3ReNA6o5c+YgLCwMu3fvRkZGRrmLISIiInouLS2Z4OLiAmtra+UWHh7+zFMGBwejV69e8PPzUymPj49HcXGxSrmXlxdcXV0RFxen9iWpPYdq1qxZmDBhAt5++20AwDvvvKPyCBpBECCRSCCXy9U+OREREb1itDiHKj09HTKZTFkslUorrL5p0yacO3cOZ86cKbcvMzMTJiYmsLGxUSl3cHBAZmam2l1SO6CaOXMmPv/8cxw6dEjtxomIiIgq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lLu7O4YOHYpPP/0U27dvV7a5ZcsWAICbmxskEgl2796Nv//+G3l5ebCyskJYWBjGjRuHdevW4caNGzh37hyWL1+unOj9+eefIzk5GV9++SWSkpKwceNGREdHa3S9DRo0QFpaGjZt2oQbN24gIiKiwgn2pqamGDp0KM6fP4+jR48iJCQEAwYMgKOjIwBg5syZCA8PR0REBK5du4aLFy8iKioKixcv1qg/RKQ5BlREVO2Ym5vjzz//hKurK/r16wdvb28MGzYMBQUFyozVhAkT8PHHH2Po0KHw9fWFlZUV3n333ee2u3LlSrz33nsYNWoUvLy8MGLECDx+/BgAUKdOHcycOROTJk2Cg4MDRo8eDQCYPXs2pk6divDwcHh7eyMgIAC///47PDw8AJTOa/r111+xfft2+Pj4YNWqVZg3b55G1/vOO+9g3LhxGD16NJo3b44TJ05g6tSp5erVr18f/fr1w9tvv4233noLzZo1U1kWYfjw4VizZg2ioqLQtGlTdO7cGdHR0cq+ElHlkQjPmsFJRERERGphhoqIiIhIJAZURERERCIxoCIiIiISiQEVERERkUgMqIiIiIhEYkBFREREJBIDKiIiIiKRGFARERERicSAioiIiEgkBlREREREIjGgIiIiIhLp/wF+jU56GQKoYgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "confusion_matrix = metrics.confusion_matrix(sample['Label Expert'], sample['Label Llama 8b'])\n",
    "\n",
    "cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = ['Disinfo', 'Counter-Disinfo','Unrelated'])\n",
    "\n",
    "cm_display.plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "LSUrqCjFc1VG"
   },
   "source": [
    "### Llama 70B\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "LCtDCtmlcjEs"
   },
   "outputs": [],
   "source": [
    "# because the 70b version was too heavy to import, we used the free Groq API\n",
    "from groq import Groq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "RrG31pUHcjCW"
   },
   "outputs": [],
   "source": [
    "GROQ_API = 'your-GROQ-token here'\n",
    "\n",
    "client = Groq(\n",
    "    api_key=GROQ_API\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "suCOEhDMcTjo"
   },
   "outputs": [],
   "source": [
    "Tweet_1 = \"'#Ukraine MH17 may be CIA false flag and it ain't flying Alex Jones' Infowars: There's a war on for your mind!'\"\n",
    "Category_1 = \"Pro-Russian\"\n",
    "Tweet_2 = \"'RT @FrankfurtFinanz: My prediction: faked #MH17 investigation report blaming Russia will be released hours before NATO meeting in Wales'\"\n",
    "Category_2 = \"Pro-Russian\"\n",
    "Tweet_3 = \"'Excellent technical analysis of Why a #Russian BUK missile shot down# MH17'\"\n",
    "Category_3 = \"Pro-Ukrainian\"\n",
    "Tweet_4 = \"'MH17 shootdown may have been a 'mistake' by pro-Russian rebels: US - Hindustan Times'\"\n",
    "Category_4 = \"Pro-Ukrainian\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "LY-1IJ52dAXj",
    "outputId": "7f7c0872-cfb4-4a0b-eb8e-a51c66055ef0"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "You are a classifier and will classify Tweets into these three categories: \n",
      "'Pro-Russian'. This category applies in the following cases: \n",
      "• The tweet states or implies that Ukrainian authorities, NATO or EU countries are responsible for the shoot-down of flight MH-17. \n",
      "• The tweet states or implies that Russian authorities or Russian-backed separatists are not responsible for the shoot-down, but does not put a blame on a specific entity. \n",
      "'Pro-Ukrainian'. This category applies in the following cases: \n",
      "• The tweet states or implies that Putin, Russian authorities or Russian-backed separatists are responsible for the shoot-down of flight MH-17. \n",
      "• The tweet states or implies that Ukrainian authorities are not responsible for the shootdown, but does not put a blame on a specific entity.\n",
      "'Unrelated'. For all other cases. \n",
      "Assign a category to the following Tweets:\n"
     ]
    }
   ],
   "source": [
    "system_message = \"You are a classifier and will classify Tweets into these three categories: \\n'Pro-Russian'. This category applies in the following cases: \\n• The tweet states or implies that Ukrainian authorities, NATO or EU countries are responsible for the shoot-down of flight MH-17. \\n• The tweet states or implies that Russian authorities or Russian-backed separatists are not responsible for the shoot-down, but does not put a blame on a specific entity. \\n'Pro-Ukrainian'. This category applies in the following cases: \\n• The tweet states or implies that Putin, Russian authorities or Russian-backed separatists are responsible for the shoot-down of flight MH-17. \\n• The tweet states or implies that Ukrainian authorities are not responsible for the shootdown, but does not put a blame on a specific entity.\\n'Unrelated'. For all other cases. \\nAssign a category to the following Tweets:\"\n",
    "print(system_message)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "IPmZ5HICdAU_"
   },
   "outputs": [],
   "source": [
    "def groq_prompt_creator(dataset, startprompt):\n",
    "\n",
    "  prompt = ''\n",
    "\n",
    "  # Clean every tweet and add to the prompt\n",
    "  counter = 1\n",
    "\n",
    "  for tweet in dataset:\n",
    "\n",
    "    tweet = re.sub(r'\"', \"'\", tweet)\n",
    "    tweet = f\"\\n {counter}: '{tweet}'.\"\n",
    "\n",
    "    prompt = prompt + tweet\n",
    "    counter += 1\n",
    "\n",
    "\n",
    "  final_prompt = prompt + '\\n Now give the classes of these tweets in a numbered list, NO additional information.'\n",
    "\n",
    "  return final_prompt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "FGA1VA1adASl"
   },
   "outputs": [],
   "source": [
    "def groq_classifier(dataset, start_prompt, nr_groups = 1):\n",
    "\n",
    "  llama_response, final_messages, tweet_batch = [], [], []\n",
    "\n",
    "  for group in np.array_split(dataset, nr_groups):\n",
    "    batch = group['V10']\n",
    "\n",
    "    final_message = groq_prompt_creator(batch, start_prompt)\n",
    "\n",
    "    chat_completion = client.chat.completions.create(\n",
    "\n",
    "      messages=[\n",
    "\n",
    "\n",
    "            {\"role\": \"system\", \"content\": system_message},\n",
    "            {\"role\": \"user\", \"content\": Tweet_1},\n",
    "            {\"role\": \"assistant\", \"content\": Category_1},\n",
    "            {\"role\": \"user\", \"content\": Tweet_2},\n",
    "            {\"role\": \"assistant\", \"content\": Category_2},\n",
    "            {\"role\": \"user\", \"content\": Tweet_3},\n",
    "            {\"role\": \"assistant\", \"content\": Category_3},\n",
    "            {\"role\": \"user\", \"content\": Tweet_4},\n",
    "            {\"role\": \"assistant\", \"content\": Category_4},\n",
    "            {\"role\": \"user\", \"content\": final_message},\n",
    "\n",
    "\n",
    "\n",
    "        ],\n",
    "    model=     \"llama3-70b-8192\",\n",
    "\n",
    "\n",
    "    max_tokens=40,\n",
    "    temperature=0,\n",
    ")\n",
    "\n",
    "    llama3_response = chat_completion.choices[0].message.content\n",
    "\n",
    "######\n",
    "    llama_response.append(llama3_response)\n",
    "    final_messages.append(final_message)\n",
    "    tweet_batch.append(batch)\n",
    "\n",
    "\n",
    "  dataframe = pd.DataFrame(\n",
    "  {'Tweets': tweet_batch,\n",
    "    'Last Message':final_messages,\n",
    "    'Llama response': llama_response})\n",
    "\n",
    "  return dataframe\n",
    "\n",
    "def unpack_results(predictions, dataset):\n",
    "\n",
    "  re_categories, numbered_classes = [],[]\n",
    "\n",
    "  for i in range(len(predictions)):\n",
    "\n",
    "    original_tweets = predictions['Tweets'][i]\n",
    "\n",
    "    response_text = predictions['Llama response'][i]\n",
    "\n",
    "    results = re.findall(r'(?:Pro-[A-Za-z]+|Unrelated)', response_text)\n",
    "\n",
    "    if len(results) == len(original_tweets):\n",
    "\n",
    "      for number, tweet in enumerate(original_tweets):\n",
    "\n",
    "        class_ = results[number]\n",
    "\n",
    "        re_categories.append(class_)\n",
    "\n",
    "    elif len(results) != len(original_tweets):\n",
    "\n",
    "      for tweet in original_tweets:\n",
    "\n",
    "        class_ = 'Unknown'\n",
    "\n",
    "        re_categories.append(class_)\n",
    "\n",
    "      print(i)\n",
    "\n",
    "\n",
    "  dataset['Llama Predictions'] = re_categories\n",
    "\n",
    "\n",
    "  for response in dataset['Llama Predictions']:\n",
    "    if 'Unrelated' in response:\n",
    "      numbered_classes.append(3)\n",
    "    if 'Pro-Ukrainian' in response:\n",
    "      numbered_classes.append(2)\n",
    "    if 'Pro-Russian' in response:\n",
    "      numbered_classes.append(1)\n",
    "    if 'Unknown' in response:\n",
    "      numbered_classes.append(0)\n",
    "\n",
    "  dataset['Predicted Category'] = numbered_classes\n",
    "  dataset = dataset.rename(columns={\"V15\": \"Category\"})\n",
    "\n",
    "  return dataset\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "prediction = groq_classifier(sample, system_message, 60)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sample_predict = unpack_results(prediction,sample)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 449
    },
    "id": "1KocqhUOdJje",
    "outputId": "7441446d-2eba-4f56-92b6-b37433e50656"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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OYchEJVA3nfGcHqpAsID/9cIAuA+rBzZq01h7auEtb+IvN3GuJcloOVi3unX2JibV8DVrVj12sn5Lpo/WYA7d8xw66Y5/u/DJPi0KMCcD7rC2EiEvX0JAODOHTNUVPD308aE33X9MdQhPyZUelRaWoq8vDy1ZRNiYmLQr18/DB06tFr7JUuWwMXFBe3atYORkRG2bdsGZ2dn2NnZ6SymqVOnomPHjpg3bx4GDx6MpKQkrFixAqtWrdLZOQzB7WNGKM01gvOAsmrHmr2lgLJMwKVPTVFeKMDaT4m2n5fBwp0Vqsamhd8tfLLkV9Xr0WMr5zbu/dkTmza0RFDXXADAyrX71N73/pTnkHa6qf4CJcn4XZOuMaHSo/j4eLi4uMDExAT29vYIDAxEbGwshg0bVm1ZfKBy7YyFCxciMzMTxsbG6NixI3788cca2z6q9u3bY+vWrZg9ezbmzZsHFxcXREdHP3RC+uPIoYsS3c/cr/W4xwj1daiocUo73RQv9K59WP1hx6hx4XddfxSA5CG7hlj/F0RR5K/RJFlRURFsbW3xQdLzMLfmxE1Dd3hw239vRESNRoWiFAkZS1BYWFhnc2Krfk7MOib950RJcTnmd/6lTuPVFitUREREpDfaPty4tj4amoYXEREREVEjwwoVERER6Y0IAUqJc6hELptAREREjzMO+RERERFRjVihIiIiIr1RigKUorQhO6nvrwtMqIiIiEhvFDCCQuIAmdT314WGFxERERFRI8MKFREREekNh/yIiIiIJFLCCEqJA2RS318XGl5ERERERI0MK1RERESkNwpRgELikJ3U99cFJlRERESkN5xDRURERCSRKBpBKXGlc5ErpRMREREZHlaoiIiISG8UEKCQ+HBjqe+vC0yoiIiISG+UovQ5UEpRR8HoEIf8iIiIiCRihYqIiIj0RqmDSelS318XmFARERGR3ighQClxDpTU99eFhpfiEREREemIl5cXBEGotkVGRgIASkpKEBkZCUdHR1hbWyM8PBz5+flan4cJFREREelN1UrpUjdNnThxArm5uapt7969AIBXX30VADB58mTs2bMH27ZtQ2JiIq5fv46BAwdqfV0c8iMiIiK90fccqiZNmqi9/vjjj/Hkk0+ie/fuKCwsxLp167B582b06tULABAXF4eAgAAcO3YMnTt31vg8rFARERFRo1RU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\n",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "confusion_matrix = metrics.confusion_matrix(sample['Label Expert'], sample['Label Llama 70b'])\n",
    "\n",
    "cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = ['Disinfo', 'Counter-Disinfo','Unrelated'])\n",
    "\n",
    "cm_display.plot()\n",
    "\n",
    "# Adjust the colorbar ticks\n",
    "cbar = plt.gcf().axes[-1]  # Get the colorbar axis\n",
    "cbar.locator_params(nbins=10)  # Set the number of ticks to 10\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "dhs1ZLQAvsOj"
   },
   "source": [
    "### Student sample"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 455
    },
    "id": "SyGgz9xiwLEH",
    "outputId": "2c6d8fdf-809f-41a6-ac0f-38095b9c1532"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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kUwqmEAlc4BM7v5VoeZFRERERFTLsEJFREREBqMUEpQyh+zk7l8VmFARERGRwRjrHCoO+REREZHBCGEClcxF6HCndG9vb0iSVGEJDw8HABQWFiI8PBzOzs6wtbVFv379kJWVpfN5MaEiIiIio3X8+HFkZGSolz179gAAXnvtNQDA+PHjsX37dmzevBkHDhzAjRs30LdvX52PwyE/IiIiMhglJChlPtxYl/3r1q2r8fqTTz7B008/jU6dOiEnJwerV6/G+vXr0bVrVwBATEwM/P39cfToUbRr107r47BCRURERAajEv/Mo3r8payv3NxcjaWoqOihxy4uLsb//vc/DB06FJIkITExESUlJQgODla3adKkCTw9PREfH6/TeTGhIiIiolrJw8MD9vb26iUqKuqh7bdu3Yrs7GwMHjwYAJCZmQlzc3M4ODhotHNxcUFmZqZOsXDIj4iIiAymfGK53D4AID09HQqFQr3ewsLiofutXr0aPXr0gLu7u6zjV4YJFRERERmMChJUMudQle+vUCg0EqqHuXr1Kvbu3YstW7ao17m6uqK4uBjZ2dkaVaqsrCy4urrqFBOH/IiIiMjoxcTEoF69eujZs6d6XevWrWFmZoa4uDj1uuTkZFy7dg1BQUE69c8KFRERERlMddwpXaVSISYmBoMGDUKdOv+kPvb29hg2bBgmTJgAJycnKBQKjB49GkFBQTpd4QcwoSIiIiID0uccKm3t3bsX165dw9ChQytsW7RoEUxMTNCvXz8UFRUhJCQEy5cv1zkmJlRERERk1F588UUIISrdZmlpiWXLlmHZsmWyjsGEioiIiAxGBT08y0/mpPaqwISKiIiIDEbo4So/wYSKiIiInmTldzuX20dNw9smEBEREcnEChUREREZTHVc5WcITKiIiIjIYDjkR0RERESVYoWKiIiIDEafz/KrSZhQERERkcFwyI+IiIiIKsUKFRERERmMsVaomFARERGRwRhrQsUhPyIiIiKZWKEiIiIigzHWChUTKiIiIjIYAfm3PRD6CUWvmFARERGRwRhrhYpzqIiIiIhkYoWKiIiIDMZYK1RMqIiIiMhgjDWh4pAfERERkUysUBEREZHBGGuFigkVERERGYwQEoTMhEju/lWBQ35EREREMrFCRURERAajgiT7xp5y968KTKiIiIjIYIx1DhWH/IiIiIhkYoWK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Mq5du4agoCCtj6PzVX5EREREtYWdnR2aN2+usc7GxgbOzs7q9cOGDcOECRPg5OQEhUKB0aNHIygoSOsr/AAdEiqVSqV1p0RERESVqsb7UD3IokWLYGJign79+qGoqAghISFYvny5Tn3oNIeKiIiISA59zqF6XPv379d4bWlpiWXLlmHZsmWP3ScTKiIiIjKcGlih0gedH45MRERERJpYoSIiIiLDMdIKFRMqIiIiMpiaMIeqKnDIj4iIiEgmVqiIiIjIcDjkR0RERCQPh/yIiIiIqFKsUBEREZHhcMiPiIiISCYjTag45EdEREQkEytUREREZDDS34vcPmoaJlRERERkOEY65MeEioiIiAyGt00gIiIiokqxQkVERESGwyE/IiIiIj2ogQmRXBzyIyIiIpKJFSoiIiIyGGOdlM6EioiIiAzHSOdQcciPiIiISCZWqIiIiMhgOORHREREJBeH/IiIiIioMqxQkX6plIDEPN3YvdSyW3WHQAa07uq26g6Bqtjduyo08jfMsTjkR0RERCSXkQ75MaEiIiIiwzHShIpjM0REREQysUJFREREBsM5VERERERycciPiIiIiCrDChUREREZjCQEJCGvxCR3/6rAChUREREZjtDToqUVK1agZcuWUCgUUCgUCAoKwo4dO9TbCwsLER4eDmdnZ9ja2qJfv37IysrS+bSYUBEREZHRatCgAT755BMkJibit99+Q9euXREWFobff/8dADB+/Hhs374dmzdvxoEDB3Djxg307dtX5+NwyI+IiIgMxtBX+fXu3Vvj9Zw5c7BixQocPXoUDRo0wOrVq7F+/Xp07doVABATEwN/f38cPXoU7dq10/o4rFARERGR4ehxyC83N1djKSoqeuihlUolNmzYgPz8fAQFBSExMRElJSUIDg5Wt2nSpAk8PT0RHx+v02kxoSIiIqJaycPDA/b29uolKiqq0nZnz56Fra0tLCws8N577+H7779H06ZNkZmZCXNzczg4OGi0d3FxQWZmpk6xcMiPiIiIDEafQ37p6elQKBTq9RYWFpW29/Pzw6lTp5CTk4Nvv/0WgwYNwoEDB+QF8S9MqIiIiMhw9Hhjz/Ir9x7F3NwcjRo1AgC0bt0ax48fx5IlS9C/f38UFxcjOztbo0qVlZUFV1dXnULikB8REREZTHmFSu4ih0qlQlFREVq3bg0zMzPExcWptyUnJ+PatWsICgrSqU9WqIiIiMhoTZ06FT169ICnpyfu3r2L9evXY//+/di1axfs7e0xbNgwTJgwAU5OTlAoFBg9ejSCgoJ0usIPYEJFREREhmTgZ/ndvHkTAwcOREZGBuzt7dGyZUvs2rUL3bt3BwAsWrQIJiYm6NevH4qKihASEoLly5frHBITKiIiIjIouUN2uli9evVDt1taWmLZsmVYtmyZrONwDhURERGRTKxQERERkeEIUbbI7aOGYUJFREREBmPoR88YCof8iIiIiGRihYqIiIgMx8BX+RkKEyoiIiIyGElVtsjto6bhkB8RERGRTKxQERERkeFwyI+IiIhIHmO9yo8JFRERERmOkd6HinOoiIiIiGRihYqIiIgMhkN+RERERHIZ6aR0DvkRERERycQKFRERERkMh/yIiIiI5OJVfkRERERUGVaoiIiIyGA45EdEREQkF6/yIyIiIqLKsEJFREREBsMhPyIiIiK5VKJskdtHDcOEioiIiAyHc6iIiIiIqDKsUBEREZHBSNDDHCq9RKJfTKiIiIjIcHindCIiIiKqDCtUREREZDC8bQIRERGRXLzKj4iIiIgqwwoVERERGYwkBCSZk8rl7l8VmFARERGR4aj+XuT2UcNwyI+IiIiMVlRUFNq0aQM7OzvUq1cPffr0QXJyskabwsJChIeHw9nZGba2tujXrx+ysrJ0Og4TKiIiIjKY8iE/uYu2Dhw4gPDwcBw9ehR79uxBSUkJXnzxReTn56vbjB8/Htu3b8fmzZtx4MAB3LhxA3379tXpvDjkR0RERIZj4Kv8du7cqfE6NjYW9erVQ2JiIl544QXk5ORg9erVWL9+Pbp27QoAiImJgb+/P44ePYp27dppdRxWqIiIiMhwyu+ULncBkJubq7EUFRU98vA5OTkAACcnJwBAYmIiSkpKEBwcrG7TpEkTeHp6Ij4+XuvTYkJFREREtZKHhwfs7e3VS1RU1EPbq1QqjBs3Dh06dEDz5s0BAJmZmTA3N4eDg4NGWxcXF2RmZmodC4f8iGR6fVQWhv1fJr5f9RRWTq9f3eGQnllZl+LtUVfQvuufsHcqweULtvjiU1+k/K6o7tBIBpUS+O4zTxz+vi6yb5rB0aUYL7x2E33GXof095N3B3h0qHTfNz9KQ6/3/jBgtMZFn3dKT09Ph0Lxz3fRwsLiofuFh4fj3LlzOHTokLwAKsGEqoby9vbGuHHjMG7cOIMfOzY2FuPGjUN2drbBj13b+AYUoOdbt3Hld8vqDoWqyNjIC/BqlI8FHzXFrZsW6NorE3P/exLvvdIOt24+/D9vqrm2L2+AvV+74r1FKWjgW4ArZ2zx34mNYaVQInRoBgBgWeIxjX1O73PEqg8a4bkef1VHyMZDjw9HVigUGgnVw4waNQo//vgjfv31VzRo0EC93tXVFcXFxcjOztaoUmVlZcHV1VXrkDjk9wCdO3euNJmJjY2tUBasCWpqXMbM0lqJD5dexeIPGuBujml1h0NVwNxCiQ7Bf+KrRU/jXKIjMtKtsW5FQ9xIt0bP169Xd3gkw8VEO7R+8TYCu91BXY8itO15Cy1euIMrp2zVbRzqlWgsibud0LR9Dup5PXqeDtUcQgiMGjUK33//PX755Rf4+PhobG/dujXMzMwQFxenXpecnIxr164hKChI6+MwoTKw4uLi6g6B9GTU3D9wLE6BkwftqjsUqiKmpgKmdQSKizX/qywuNEHTwJxqior0wbf1Xfx+2B4ZV8qqy1fPWyP5uAIBXbIrbZ/zpxlO/eKITv11uzcRVSSp9LNoKzw8HP/73/+wfv162NnZITMzE5mZmbh37x4AwN7eHsOGDcOECROwb98+JCYmYsiQIQgKCtL6Cj+ACZUsgwcPRp8+fbBgwQK4ubnB2dkZ4eHhKCkpUbfx9vbGrFmzMHDgQCgUCowYMQIAcOjQITz//POwsrKCh4cHxowZo3FPjH/77LPP0KJFC9jY2MDDwwPvv/8+8vLyAAD79+/HkCFDkJOTA0mSIEkSIiMjAQBFRUWYNGkS6tevDxsbG7Rt2xb79+/X6Ds2Nhaenp6wtrbGK6+8glu3bun3jTJCncLuoFGLe/gqyq26Q6EqdK+gDs6fUuDNEWlwqlsEExOBLj0z0SQgB051+cdRbdY7/DqCXv4LH3RuhYE+Qfgo9BmEDruBDq/8WWn7X7+tB0sbJdr04P+PsunxKj9trFixAjk5OejcuTPc3NzUy8aNG9VtFi1ahF69eqFfv3544YUX4Orqii1btuh0WkyoZNq3bx8uX76Mffv2Yc2aNYiNjUVsbKxGmwULFiAgIAAnT55EREQELl++jNDQUPTr1w9nzpzBxo0bcejQIYwaNeqBxzExMUF0dDR+//13rFmzBr/88gsmT54MAGjfvj0WL14MhUKBjIwMZGRkYNKkSQDKxozj4+OxYcMGnDlzBq+99hpCQ0ORkpICAEhISMCwYcMwatQonDp1Cl26dMHs2bMfed5FRUUVLld9UtR1L8bImTfw6ShPlBTxK2TsFvxfU0gS8L+4w/jht/14+T/pOLDDBaoa+OgL0l7C9qdw+Pu6CP/8Imb/fBrvLkrBz1/Ux6+b61ba/sDGeujwyp8wt6x5z5CjhxNCVLoMHjxY3cbS0hLLli3D7du3kZ+fjy1btug0fwrgpHTZHB0dsXTpUpiamqJJkybo2bMn4uLiMHz4cHWbrl27YuLEierX77zzDgYMGKCeo9W4cWNER0ejU6dOWLFiBSwtK05wvn8+l7e3N2bPno333nsPy5cvh7m5Oezt7SFJksYPwLVr1xATE4Nr167B3d0dADBp0iTs3LkTMTExmDt3LpYsWYLQ0FB1cubr64sjR45UuBHav0VFRWHGjBk6v1/GoFHLe3CsW4pluy6q15nWAVq0y8fLQ/5CL++WUKmkaoyQ9CnzujU+HNoKFlZKWNuU4s5fFpgy7xwyr1tVd2gkw/o53uj9/nUEhZVNMPf0L8Bf1y2wbVkDvPCaZpXqQoICGZetMXp5cmVdka4MfGNPQ2FCJVOzZs1gavrPhGQ3NzecPXtWo82zzz6r8fr06dM4c+YM1q1bp14nhIBKpUJqair8/f0rHGfv3r2IiorChQsXkJubi9LSUhQWFqKgoADW1taVxnb27FkolUr4+vpqrC8qKoKzszMAICkpCa+88orG9qCgoEcmVFOnTsWECRPUr3Nzc+Hh4fHQfYzFqYO2GNFF8z2duCgd6ZcssWlZXSZTRqronimK7pnC1q4ErdrfxleLnq7ukEiG4nsmMPlXgdnEVEBU8v3dv6EefFrkwatpgYGiM266PjrmQX3UNEyoHkChUKjvpnq/7Oxs2Nvbq1+bmZlpbJckCap/jQXY2NhovM7Ly8O7776LMWPGVOjf09Ozwrq0tDT06tULI0eOxJw5c+Dk5IRDhw5h2LBhKC4ufmBClZeXB1NTUyQmJmokfQBga2tb6T7asrCweOT9PozVvXxTXE3WrE4UFpjg7p2K66n2a9X+FiQJuJ5mDXePexg64RKup1ljzw+cP1ebBQbfxtbPG8C5fhEa+BYg7ZwNdqyqX2HSecFdUxz76Sn8JyKtegKlWoMJ1QP4+flh9+7dFdafOHGiQsVHV61atcL58+fRqFEjrdonJiZCpVJh4cKFMPn7T6pNmzZptDE3N4dSqdRYFxgYCKVSiZs3b+L555+vtG9/f38kJCRorDt69Ki2p0Jk9GxsSzF47GU85VKEuzlmOLy3LtZ8/jSUpZw/V5sNmpWKbxd4Iuajhsj9q+zGnl0HZKLvuHSNdke3PQUhgPZhlU9Wp8egx/tQ1SRMqB5g5MiRWLp0KcaMGYN33nkHFhYW+Omnn/DNN99g+/btsvr+8MMP0a5dO4waNQrvvPMObGxscP78eezZswdLly6t0L5Ro0YoKSnB559/jt69e+Pw4cNYuXKlRhtvb2/k5eUhLi4OAQEBsLa2hq+vLwYMGICBAwdi4cKFCAwMxJ9//om4uDi0bNkSPXv2xJgxY9ChQwcsWLAAYWFh2LVr1yOH+6iiya9qlxxT7XNwtwsO7nap7jBIz6xslXg7MhVvR6Y+tF3XAVnoOoC3StArAUDuRR01L5/iVX4P0rBhQ/z666+4cOECgoOD0bZtW2zatAmbN29GaGiorL5btmyJAwcO4OLFi3j++ecRGBiIadOmqSeO/1tAQAA+++wzfPrpp2jevDnWrVtX4XlF7du3x3vvvYf+/fujbt26mDdvHoCyJ2YPHDgQEydOhJ+fH/r06YPjx4+rhxbbtWuHVatWYcmSJQgICMDu3bvx8ccfyzo/IiKiBymfQyV3qWkkIWpgVFTr5Obmwt7eHp0RhjqS2aN3oFrN9Cnn6g6BDGjtyW3VHQJVsbt3VWjkn4WcnBytH+Wiq/LfE10Dp6COqbzHdZUqC/HLyU+qNF5dcciPiIiIDEdAD3Oo9BKJXjGhIiIiIsMx0knpnENFREREJBMrVERERGQ4KgBy739cAx/9xISKiIiIDMZY75TOIT8iIiIimVihIiIiIsMx0knpTKiIiIjIcIw0oeKQHxEREZFMrFARERGR4RhphYoJFRERERkOb5tAREREJA9vm0BERERElWKFioiIiAyHc6iIiIiIZFIJQJKZEKlqXkLFIT8iIiIimVihIiIiIsPhkB8RERGRXHpIqFDzEioO+RERERHJxAoVERERGQ6H/IiIiIhkUgnIHrLjVX5ERERExocVKiIiIjIcoSpb5PZRwzChIiIiIsPhHCoiIiIimTiHioiIiKj2+fXXX9G7d2+4u7tDkiRs3bpVY7sQAtOmTYObmxusrKwQHByMlJQUnY7BhIqIiIgMp3zIT+6ig/z8fAQEBGDZsmWVbp83bx6io6OxcuVKJCQkwMbGBiEhISgsLNT6GBzyIyIiIsMR0MMcKt2a9+jRAz169Ki8KyGwePFifPzxxwgLCwMArF27Fi4uLti6dSveeOMNrY7BChURERHVSrm5uRpLUVGRzn2kpqYiMzMTwcHB6nX29vZo27Yt4uPjte6HCRUREREZjh6H/Dw8PGBvb69eoqKidA4nMzMTAODi4qKx3sXFRb1NGxzyIyIiIsNRqQDIvI+Uqmz/9PR0KBQK9WoLCwt5/crAChURERHVSgqFQmN5nITK1dUVAJCVlaWxPisrS71NG0yoiIiIyHCq4Sq/h/Hx8YGrqyvi4uLU63Jzc5GQkICgoCCt++GQHxERERlONdwpPS8vD5cuXVK/Tk1NxalTp+Dk5ARPT0+MGzcOs2fPRuPGjeHj44OIiAi4u7ujT58+Wh+DCRUREREZtd9++w1dunRRv54wYQIAYNCgQYiNjcXkyZORn5+PESNGIDs7Gx07dsTOnTthaWmp9TGYUBEREZHhVMOjZzp37gzxkKqWJEmYOXMmZs6c+dghMaEiIiIigxFCBSHkXeUnd/+qwISKiIiIDEcI+Q831uOkdH3hVX5EREREMrFCRURERIYj9DCHqgZWqJhQERERkeGoVIAkcw5UDZxDxSE/IiIiIplYoSIiIiLD4ZAfERERkTxCpYKQOeRXE2+bwCE/IiIiIplYoSIiIiLD4ZAfERERkUwqAUjGl1BxyI+IiIhIJlaoiIiIyHCEACD3PlQ1r0LFhIqIiIgMRqgEhMwhP8GEioiIiJ5oQgX5FSreNoGIiIjI6LBCRURERAbDIT8iIiIiuYx0yI8JFelF+V8LpSiRfb82qvmEqri6QyADunu35v3yIv26m1f2GRui8qOP3xOlKNFPMHrEhIr04u7duwCAQ/i5miMhg7hV3QGQITXyr+4IyFDu3r0Le3v7Kunb3Nwcrq6uOJSpn98Trq6uMDc310tf+iCJmjgQSbWOSqXCjRs3YGdnB0mSqjscg8jNzYWHhwfS09OhUCiqOxyqQvysnyxP4ucthMDdu3fh7u4OE5Oqu16tsLAQxcX6qXCbm5vD0tJSL33pAytUpBcmJiZo0KBBdYdRLRQKxRPzn+6Tjp/1k+VJ+7yrqjJ1P0tLyxqVBOkTb5tAREREJBMTKiIiIiKZmFARPSYLCwtMnz4dFhYW1R0KVTF+1k8Wft70ODgpnYiIiEgmVqiIiIiIZGJCRURERCQTEyoiIiIimZhQEd1HkiRs3bpV723Lbd26FY0aNYKpqSnGjRunc3xU+0VGRuKZZ57Re9tyBQUF6NevHxQKBSRJQnZ2ts4xPum8vb2xePHiajl2bGwsHBwcquXYJA8TKnoiDB48GJIkQZIkmJmZwcXFBd27d8dXX30Fleqf55RlZGSgR48eWvWpS9ty7777Ll599VWkp6dj1qxZOu1bW2VmZmL06NFo2LAhLCws4OHhgd69eyMuLs6gcTxOAqyttLQ09c+XJEmws7NDs2bNEB4ejpSUFI22kyZN0vrcdWlbbs2aNTh48CCOHDmCjIwMg9ysUd86d+5c6R8cNTXZqKlxkWExoaInRmhoKDIyMpCWloYdO3agS5cuGDt2LHr16oXS0lIAZc+G0vZSaV3aAkBeXh5u3ryJkJAQuLu7w87O7rHOozZJS0tD69at8csvv2D+/Pk4e/Ysdu7ciS5duiA8PLy6w3ssJSUPfijr3r17kZGRgdOnT2Pu3LlISkpCQECARlJka2sLZ2dnrY6lS9tyly9fhr+/P5o3bw5XV9cn5lFQ2tDXI0+IKiWIngCDBg0SYWFhFdbHxcUJAGLVqlVCCCEAiO+//14IIURRUZEIDw8Xrq6uwsLCQnh6eoq5c+eq972/bWpqqgAgvvvuO9G5c2dhZWUlWrZsKY4cOSKEEGLfvn0CZc9XVy/79u0TQgjx7bffiqZNmwpzc3Ph5eUlFixYUGXvg6H16NFD1K9fX+Tl5VXYdufOHSGEEFevXhUvv/yysLGxEXZ2duK1114TmZmZ6naVfXZjx44VnTp1Ur/u1KmTGD16tPjggw+Eo6OjcHFxEdOnT1dv9/Ly0njvvby81Nu2bt0qAgMDhYWFhfDx8RGRkZGipKREvR2AWL58uejdu7ewtrbW6Ldc+ed/8uRJjfVKpVJ07txZeHl5idLSUiGEENOnTxcBAQHqNvv27RNt2rQR1tbWwt7eXrRv316kpaVV2rb8vZg/f75wdXUVTk5O4v333xfFxcXq9+H+8yx/j27fvi3efvtt4eDgIKysrERoaKi4ePFihfOoKTp16iTGjh1bYX1MTIywt7cXQjz6vRCi7HOfOXOmePvtt4WdnZ0YNGiQEEKIgwcPio4dOwpLS0vRoEEDMXr0aI2fUS8vL7Fo0SL164ULF4rmzZsLa2tr0aBBAzFy5Ehx9+5dIUTl3+3yn5HCwkIxceJE4e7uLqytrcVzzz2n/t7ff04eHh7CyspK9OnTRyxYsEB9jlS7sEJFT7SuXbsiICAAW7ZsqbAtOjoa27Ztw6ZNm5CcnIx169bB29v7of199NFHmDRpEk6dOgVfX1+8+eabKC0tRfv27ZGcnAwA+O6775CRkYH27dsjMTERr7/+Ot544w2cPXsWkZGRiIiIQGxsbBWcrWHdvn0bO3fuRHh4OGxsbCpsd3BwgEqlQlhYGG7fvo0DBw5gz549uHLlCvr376/z8dasWQMbGxskJCRg3rx5mDlzJvbs2QMAOH78OAAgJiYGGRkZ6tcHDx7EwIEDMXbsWJw/fx5ffPEFYmNjMWfOHI2+IyMj8corr+Ds2bMYOnSo1jGZmJhg7NixuHr1KhITEytsLy0tRZ8+fdCpUyecOXMG8fHxGDFixEOrSvv27cPly5exb98+rFmzBrGxseqfly1btmD48OEICgpCRkaG+ud68ODB+O2337Bt2zbEx8dDCIGXXnrpodW22uBh70W5BQsWICAgACdPnkRERAQuX76M0NBQ9OvXD2fOnMHGjRtx6NAhjBo16oHHMTExQXR0NH7//XesWbMGv/zyCyZPngwAaN++PRYvXgyFQoGMjAxkZGRg0qRJAIBRo0YhPj4eGzZswJkzZ/Daa68hNDRUPQyckJCAYcOGYdSoUTh16hS6dOmC2bNnV82bRVWvujM6IkN4UIVKCCH69+8v/P39hRCaVafRo0eLrl27CpVKVel+qKRC9eWXX6q3//777wKASEpKEkKUVWRwX2VKCCH+85//iO7du2v0+8EHH4imTZs+xlnWLAkJCQKA2LJlywPb7N69W5iamopr166p15W/b8eOHRNCaF+h6tixo0abNm3aiA8//FD9+v7Pq1y3bt00qo5CCPH1118LNzc3jf3GjRv30HN9UIVKCCGSkpIEALFx40YhhGbV6datWwKA2L9/f6X9Vlahur/aJYQQr732mujfv7/69b/fm4sXLwoA4vDhw+p1f/31l7CyshKbNm166HlVF20rVI96L7y8vESfPn00+hg2bJgYMWKExrqDBw8KExMTce/ePfV+91eo/m3z5s3C2dm50rjKXb16VZiamoo//vhDY323bt3E1KlThRBCvPnmm+Kll17S2N6/f39WqGopVqjoiSeEqLQiMHjwYJw6dQp+fn4YM2YMdu/e/ci+WrZsqf63m5sbAODmzZsPbJ+UlIQOHTporOvQoQNSUlKgVCq1PYUaSWjxEIakpCR4eHjAw8NDva5p06ZwcHBAUlKSTse7/70Hyt7/h733AHD69GnMnDkTtra26mX48OHIyMhAQUGBut2zzz6r/nePHj3UbZs1a/bIuMrfh8p+xpycnDB48GCEhISgd+/eWLJkCTIyMh7aX7NmzWBqaqr1eSYlJaFOnTpo27atep2zszP8/Px0fo9rGm3ei/s/O6DsM4+NjdX4zENCQqBSqZCamlrpcfbu3Ytu3bqhfv36sLOzw9tvv41bt25p/Iz829mzZ6FUKuHr66txrAMHDuDy5csAyj6b+z8XAAgKCtLpPaCao051B0BU3ZKSkuDj41NhfatWrZCamoodO3Zg7969eP311xEcHIxvv/32gX2ZmZmp/13+C/T+qwifJI0bN4YkSbhw4YKsfkxMTCokZ5UNVd3/3gNl7/+j3vu8vDzMmDEDffv2rbDN0tJS/e/7hyy//PJL3Lt3r9JjVqY8aansZwwoG4YcM2YMdu7ciY0bN+Ljjz/Gnj170K5du0rbP8551jYKhQI5OTkV1mdnZ2tctajNe/Hv4ea8vDy8++67GDNmTIX+PT09K6xLS0tDr169MHLkSMyZMwdOTk44dOgQhg0bhuLiYlhbW1d6Dnl5eTA1NUViYqJG0geUXWxAxocJFT3RfvnlF5w9exbjx4+vdLtCoUD//v3Rv39/vPrqqwgNDcXt27fh5OSkl+P7+/vj8OHDGusOHz4MX1/fCv8J1zZOTk4ICQnBsmXLMGbMmAq/2LKzs+Hv74/09HSkp6erq1Tnz59HdnY2mjZtCgCoW7cuzp07p7HvqVOntEpm7mdmZlah6teqVSskJyejUaNGWvdTv359rduqVCpER0fDx8cHgYGBD2wXGBiIwMBATJ06FUFBQVi/fv0DEypd+fv7o7S0FAkJCWjfvj0A4NatW0hOTla/xzWNn59fpRXhEydOwNfXV1bfrVq1wvnz57X+zBMTE6FSqbBw4UKYmJQN6mzatEmjjbm5eYWfrcDAQCiVSty8eRPPP/98pX37+/sjISFBY93Ro0e1PRWqYTjkR0+MoqIiZGZm4o8//sCJEycwd+5chIWFoVevXhg4cGCF9p999hm++eYbXLhwARcvXsTmzZvh6uqq1/vNTJw4EXFxcZg1axYuXryINWvWYOnSpepJrbXdsmXLoFQq8dxzz+G7775DSkoKkpKSEB0djaCgIAQHB6NFixYYMGAATpw4gWPHjmHgwIHo1KmTeqima9eu+O2337B27VqkpKRg+vTpFRIsbXh7eyMuLg6ZmZm4c+cOAGDatGlYu3YtZsyYgd9//x1JSUnYsGEDPv7448c631u3biEzMxNXrlzBtm3bEBwcjGPHjmH16tWVJsipqamYOnUq4uPjcfXqVezevRspKSnw9/d/rONXpnHjxggLC8Pw4cNx6NAhnD59Gm+99Rbq16+PsLAwvR1Hn0aOHImLFy9izJgxOHPmDJKTk9Xfx4kTJ8rq+8MPP8SRI0fUE8FTUlLwww8/PHBSeqNGjVBSUoLPP/8cV65cwddff42VK1dqtPH29kZeXh7i4uLw119/oaCgAL6+vhgwYAAGDhyILVu2IDU1FceOHUNUVBR++uknAFBXJhcsWICUlBQsXboUO3fulHV+VH2YUNETY+fOnXBzc4O3tzdCQ0Oxb98+REdH44cffqj0l52dnR3mzZuHZ599Fm3atEFaWhp+/vln9V+p+tCqVSts2rQJGzZsQPPmzTFt2jTMnDkTgwcP1tsxqlPDhg1x4sQJdOnSBRMnTkTz5s3RvXt3xMXFYcWKFZAkCT/88AMcHR3xwgsvIDg4GA0bNsTGjRvVfYSEhCAiIgKTJ09GmzZtcPfu3UoT4EdZuHAh9uzZAw8PD3W1KCQkBD/++CN2796NNm3aoF27dli0aBG8vLwe63yDg4Ph5uaGFi1aYMqUKfD398eZM2fQpUuXSttbW1vjwoUL6NevH3x9fTFixAiEh4fj3XfffazjP0hMTAxat26NXr16ISgoCEII/PzzzzpX+QylYcOG+PXXX3HhwgUEBwejbdu22LRpEzZv3ozQ0FBZfbds2RIHDhzAxYsX8fzzzyMwMBDTpk2Du7t7pe0DAgLw2Wef4dNPP0Xz5s2xbt06REVFabRp37493nvvPfTv3x9169bFvHnzAJS97wMHDsTEiRPh5+eHPn364Pjx4+qhxXbt2mHVqlVYsmQJAgICsHv37sdO5qn6SUKbmaNERERE9ECsUBERERHJxISKiIiISCYmVEREREQyMaEiIiIikokJFREREZFMTKiIiIiIZGJCRURERCQTEyoiMhqDBw9Gnz591K87d+6McePGGTyO/fv3Q5IkZGdnP7CNJEnYunWr1n1GRkbimWeekRVXWloaJEnCqVOnZPVDRBUxoSKiKjV48GBIkgRJkmBubo5GjRph5syZKC0trfJjb9myBbNmzdKqrTZJEBHRg/DhyERU5UJDQxETE4OioiL8/PPPCA8Ph5mZGaZOnVqhbXFxMczNzfVyXH09xJqI6FFYoSKiKmdhYQFXV1d4eXlh5MiRCA4OxrZt2wD8M0w3Z84cuLu7w8/PDwCQnp6O119/HQ4ODnByckJYWBjS0tLUfSqVSkyYMAEODg5wdnbG5MmT8e8naf17yK+oqAgffvghPDw8YGFhgUaNGmH16tVIS0tTP2/P0dERkiSpn6eoUqkQFRUFHx8fWFlZISAgAN9++63GcX7++Wf4+vrCysoKXbp00YhTWx9++CF8fX1hbW2Nhg0bIiIiAiUlJRXaffHFF/Dw8IC1tTVef/115OTkaGz/8ssv4e/vD0tLSzRp0gTLly/XORYi0h0TKiIyOCsrKxQXF6tfx8XFITk5GXv27MGPP/6IkpIShISEwM7ODgcPHsThw4dha2uL0NBQ9X4LFy5EbGwsvvrqKxw6dAi3b9/G999//9DjDhw4EN988w2io6ORlJSEL774Ara2tvDw8MB3330HAEhOTkZGRgaWLFkCAIiKisLatWuxcuVK/P777xg/fjzeeustHDhwAEBZ4te3b1/07t0bp06dwjvvvIMpU6bo/J7Y2dkhNjYW58+fx5IlS7Bq1SosWrRIo82lS5ewadMmbN++HTt37sTJkyfx/vvvq7evW7cO06ZNw5w5c5CUlIS5c+ciIiICa9as0TkeItKRICKqQoMGDRJhYWFCCCFUKpXYs2ePsLCwEJMmTVJvd3FxEUVFRep9vv76a+Hn5ydUKpV6XVFRkbCyshK7du0SQgjh5uYm5s2bp95eUlIiGjRooD6WEEJ06tRJjB07VgghRHJysgAg9uzZU2mc+/btEwDEnTt31OsKCwuFtbW1OHLkiEbbYcOGiTfffFMIIcTUqVNF06ZNNbZ/+OGHFfr6NwDi+++/f+D2+fPni9atW6tfT58+XZiamorr16+r1+3YsUOYmJiIjIwMIYQQTz/9tFi/fr1GP7NmzRJBQUFCCCFSU1MFAHHy5MkHHpeIHg/nUBFRlfvxxx9ha2uLkpISqFQq/Oc//0FkZKR6e4sWLTTmTZ0+fRqXLl2CnZ2dRj+FhYW4fPkycnJykJGRgbZt26q31alTB88++2yFYb9yp06dgqmpKTp16qR13JcuXUJBQQG6d++usb64uBiBgYEAgKSkJI04ACAoKEjrY5TbuHEjoqOjcfnyZeTl5aG0tBQKhUKjjaenJ+rXr69xHJVKheTkZNjZ2eHy5csYNmwYhg8frm5TWloKe3t7neMhIt0woSKiKtelSxesWLEC5ubmcHd3R506mv/12NjYaLzOy8tD69atsW7dugp91a1b97FisLKy0nmfvLw8AMBPP/2kkcgAZfPC9CU+Ph4DBgzAjBkzEBISAnt7e2zYsAELFy7UOdZVq1ZVSPBMTU31FisRVY4JFRFVORsbGzRq1Ejr9q1atcLGjRtRr169ClWacm5ubkhISMALL7wAoKwSk5iYiFatWlXavkWLFlCpVDhw4ACCg4MrbC+vkCmVSvW6pk2bwsLCAteuXXtgZcvf3189wb7c0aNHH32S9zly5Ai8vLzw0UcfqdddvXq1Qrtr167hxo0bcHd3Vx/HxMQEfn5+cHFxgbu7O65cuYIBAwbodHwiko+T0omoxhkwYACeeuophIWF4eDBg0hNTcX+/fsxZswYXL9+HQAwduxYfPLJJ9i6dSsuXLiA999//6H3kPL29sagQYMwdOhQbN26Vd3npk2bAABeXl6QJAk//vgj/vzzT+Tl5cHOzg6TJk3C+PHjsWbNGly+fBknTpzA559/rp7o/d577yElJQUffPABkpOTsX79esTGxup0vo0bN8a1a9ewYcMGXL58GdHR0ZVOsLe0tMSgQYNw+vRpHDx4EGPGjMHrr78OV1dXAMCMGTMQFRWF6OhoXLx4EWfPnkVMTAw+++wzneIhIt0xoSKiGsfa2hq//vorPD090bdvX/j7+2PYsGEoLCxUV6wmTpyIt99+G4MGDUJQUBDs7OzwyiuvPLTfFStW4NVXX8X777+PJk2aYPjw4cjPzwcA1K9fHzNmzMCUKVPg4uKCUaNGAQBmzZqFiIgIREVFwd/fH6Ghofjpp5/g4+MDoGxe03fffYetW7ciICAAK1euxNy5c3U635dffhnjx4/HqFGj8Mwzz+DIkSOIiIio0K5Ro0bo27cvXnrpJbz44oto2bKlxm0R3nnnHXz55ZeIiYlBixYt0KlTJ8TGxqpjJaKqI4kHzeAkIiIiIq2wQkVEREQkExMqIiIiIpmYUBERERHJxISKiIiISCYmVEREREQyMaEiIiIikokJFREREZFMTKiIiIiIZGJCRURERCQTEyoiIiIimZhQEREREcnEhIqIiIhIpv8HMMBadT3BdSMAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "confusion_matrix = metrics.confusion_matrix(sample['Label Expert'], sample['Label Student'])\n",
    "\n",
    "cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = ['Disinfo', 'Counter-Disinfo','Unrelated'])\n",
    "\n",
    "cm_display.plot()\n",
    "\n",
    "# Adjust the colorbar ticks\n",
    "cbar = plt.gcf().axes[-1]  # Get the colorbar axis\n",
    "cbar.locator_params(nbins=10)  # Set the number of ticks to 10\n",
    "\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "colab": {
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.18"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
